django 自定义权限,django 用户权限
本文主要为大家介绍Django登录权限和集团模板使用权限。有需要的朋友可以参考一下,希望能有所帮助。祝大家进步很大,早日升职加薪。
登录、注销和登录限制:
登录
使用authenticate进行验证后,如果验证通过。然后将返回一个用户对象。获得用户对象后,可以使用django.contrib.auth.login登录。示例代码如下:
用户=验证(用户名=用户名,密码=密码)
如果用户不是None:
如果user.is_active:
登录(请求,用户)
注销:
注销,或者注销。我们可以通过django.contrib.auth.logout他会清理这个用户的会话数据。
登录限制:
有时,查看功能需要登录后才能访问。然后我们可以通过django . contrib . auth . decorators . log in _ required decorator来实现。示例代码如下:
装饰者导入login_required
#验证失败后,会跳转到url页面/accounts/login/。
@ log in _ required(log in _ URL=/accounts/log in/)
def my_view(请求):
及格
权限:
Django内置了权限功能。他的权限都是表或者模型级别的。比如某个型号上的数据是否可以增删查。他不能以数据层面为目标,比如能不能在一个表中增删查一条数据(如果想达到数据层面,可以考虑用django-guardian)。创建模型后,该模型默认有三种权限,即增加/删除/更改/。执行migrate命令后,可以查看数据库中auth_permission表中的所有权限。
的codename表示权限的名称。名称表示该权限的功能。
通过定义模型添加权限:
如果我们想要添加新的权限,比如查看某个模型的权限,那么我们可以在定义模型的时候在Meta中定义。示例代码如下:
类文章(模型。型号):
标题=模型。CharField(max_length=100)
内容=模型。文本字段()
作者=模特。ForeignKey(get_user_model(),on_delete=models。级联)
Meta:级
权限=(
(查看_文章,可以查看文章),
)
通过代码添加权限:
权限都是django.contrib.auth.Permission这个模型包含三个字段,name,codename,content_type,其中content_type表示这个权限属于哪个app下的哪个模型。使用权限模型创建权限的代码如下:
从django.contrib.auth.models导入权限,内容类型
从。模型导入文章
content _ type=content type . objects . get _ for _ model(Article)
permission=permission . objects . create(name=编辑权限,codename=编辑文章,content _ type=内容类型)
用户与权限管理:
权限本身只是一个数据,必须和用户绑定才有效。用户模型和权限之间的管理可以通过以下方式进行:
my . user _ permissions . set(permission _ list):直接给出权限列表。My user.user _ permissions.add(权限,权限,):逐个添加权限。My.user _ permissions.remove(权限,权限,):一个
个个删除权限。
权限限定装饰器:
使用django.contrib.auth.decorators.permission_required可以非常方便的检查用户是否拥有这个权限,如果拥有,那么就可以进入到指定的视图函数中,如果不拥有,那么就会报一个400错误。示例代码如下:
from django.contrib.auth.decorators import permission_required@permission_required(front.view_article)
def my_view(request):
...
分组:
权限有很多,一个模型就有最少三个权限,如果一些用户拥有相同的权限,那么每次都要重复添加。这时候分组就可以帮我们解决这种问题了,我们可以把一些权限归类,然后添加到某个分组中,之后再把和把需要赋予这些权限的用户添加到这个分组中,就比较好管理了。分组我们使用的是django.contrib.auth.models.Group模型, 每个用户组拥有id和name两个字段,该模型在数据库被映射为auth_group数据表。
分组操作:
Group.object.create(group_name):创建分组。
group.permissions:某个分组上的权限。多对多的关系。
- group.permissions.add:添加权限。
- group.permissions.remove:移除权限。
- group.permissions.clear:清除所有权限。
- user.get_group_permissions():获取用户所属组的权限。
user.groups:某个用户上的所有分组。多对多的关系。
在模板中使用权限:
在settings.TEMPLATES.OPTIONS.context_processors下,因为添加了django.contrib.auth.context_processors.auth上下文处理器,因此在模板中可以直接通过perms来获取用户的所有权限。示例代码如下:
{% if perms.front.add_article %}<a href=/article/add/>添加文章</a>
{% endif %}
以上就是Django登录权限及分组模板使用权限的详细内容,更多关于Django权限分组的资料请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。