django 自定义权限,django 用户权限

  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(权限,权限,):一个

  个个删除权限。

  • myuser.user_permissions.clear():清除权限。
  • myuser.has_perm('<app_name>.<codename>'):判断是否拥有某个权限。权限参数是一个字符串,格式是app_name.codename。
  • myuser.get_all_permissons():获取所有的权限。
  •   

    权限限定装饰器:

      使用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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

    留言与评论(共有 条评论)
       
    验证码: