首先简单了解一下user的一些属性

User对象

User对象是认证系统的核心。用户对象通常用来代表网站的用户,并支持例如访问控制、注册用户、关联创建者和内容等。在Django认证框架中只有一个用户类,例如超级用户('superusers’)或('staff')用户只不过是相同用户对象设置了不同属性而已。

缺省字段Fields

username

用户名,必需字段。30个字符或更少,可以包含 _, @, +, . 和 - 字符。

first_name
可选。 30 characters or fewer.

last_name
可选。 30 characters or fewer.

email
邮箱,可选。 Email address.

password
密码,必需。Django不是以明文存储密码的,而是存储哈希值。

groups
用户组。Many-to-many relationship to Group

user_permissions
用户权限。Many-to-many relationship to Permission

1
2
3
4
5
6
7
8
9
groups = models.ManyToManyField(Group, verbose_name=_('groups'),
    blank=True, help_text=_('The groups this user belongs to. A user will '
                            'get all permissions granted to each of '
                            'their groups.'),
    related_name="user_set", related_query_name="user")
user_permissions = models.ManyToManyField(Permission,
    verbose_name=_('user permissions'), blank=True,
    help_text=_('Specific permissions for this user.'),
    related_name="user_set", related_query_name="user")

is_staff
Boolean。决定用户是否可以访问admin管理界面。默认False。

is_active
Boolean。 用户是否活跃,默认True。一般不删除用户,而是将用户的is_active设为False。

is_superuser
Boolean。默认False。当设为True时,用户获得全部权限。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def has_perm(self, perm, obj=None):
    """
    Returns True if the user has the specified permission. This method
    queries all available auth backends, but returns immediately if any
    backend returns True. Thus, a user who has permission from a single
    auth backend is assumed to have permission in general. If an object is
    provided, permissions for this specific object are checked.
    """
 
    # Active superusers have all permissions.
    if self.is_active and self.is_superuser:
        return True
 
    # Otherwise we need to check the backends.
    return _user_has_perm(self, perm, obj)

last_login

上一次的登录时间,为datetime对象,默认为当时的时间。

1
user.last_login = timezone.now()

date_joined
用户创建的时间

方法Methods

is_anonymous()

是否是匿名用户。

is_authenticated()
用户是否通过验证,登陆。

get_full_name()
返回first_name plus the last_name, with a space in between.

get_short_name()
返回first_name.

set_password(raw_password)
设置密码。

check_password(raw_password)
验证密码。

get_group_permissions(obj=None)
返回用户组权限的集合。

get_all_permissions(obj=None)
返回用户所有的权限集合。

has_perm(perm, obj=None)
用户是否具有某个权限。perm的格式是 "<app label>.<permission codename>". 如: user.has_perm('user.addentry') 返回的是True或者False

这里的codename 我也不知道从django哪里去找,只能打开mysql里的表,查询出codename, 后面知道再补上

has_perms(perm_list, obj=None)
用户是否具有权限列表中的每个权限。

这里查过源码,实在的方式其实是遍历了perm_list然后每次使用 self.has_perm来进行判断,如果有一个为False那么全部为False

所以perm_list只需要将需要验证的权限组织成一个列表就行,如 perm_list = [ "<app label>.<permission codename>",  "<app label>.<permission codename>"]

django中判断当前user具有是否有对模块的增删改查权限的更多相关文章

  1. Django框架表关系外键-多对多外键(增删改查)-正反向的概率-多表查询(子查询与联表查询)

    目录 一:表关系外键 1.提前创建表关系 2.目前只剩 书籍表和 书籍作者表没创建信息. 3.增 4.删 5.修改 二:多对多外键增删改查 1.给书籍绑定作者 2.删 3.修改 4.清空 三:正反向的 ...

  2. Django学习笔记(10)——Book单表的增删改查页面

    一,项目题目:Book单表的增删改查页面 该项目主要练习使用Django开发一个Book单表的增删改查页面,通过这个项目巩固自己这段时间学习Django知识. 二,项目需求: 开发一个简单的Book增 ...

  3. Django静态文件配置-request方法-ORM简介-字段的增删改查

    app的创建注意事项: 在Django新创建的app要在seetings.py中添加注册,才会生效 创建app:django-adminapp an startapp app名称 或者 python3 ...

  4. magento中Model创建以及该Model对于数据库的增删改查

    本文是按照magento英文文档照做与翻译的. Model层的实现是mvc框架的一个巨大的部分.它代表了你的应用的数据,或者说大多数应用没有数据是无用的.Magento的Model扮演着一个重要的角色 ...

  5. SpringBoot+MyBatis中自动根据@Table注解和@Column注解生成增删改查逻辑

    习惯使用jpa操作对象的方式,现在用mybatis有点不习惯. 其实是懒得写SQL,增删改查那么简单的事情你帮我做了呗,mybatis:NO. 没办法,自己搞喽! 这里主要是实现了通过代码自动生成my ...

  6. 用Java中的File类模拟实现对系统文件的增删改查效果

    码字不易,三连支持一波吧 IO操作向来是各大语言的热区,而对文件的操作也是重中之重. 那么在Java中也给我们提供了很多关于文件操作的类.今天我就用一个比较基本的File类来模拟实现对文件的增删改查效 ...

  7. django之 使用views.py里面的函数对表进行增删改查 内容(models.py中表的创建、views.py中函数的使用,基于对象的跨表查询)

    models之对于表的创建有以下几种: 一对一:ForeignKey("Author",unique=True),  OneToOneField("Author" ...

  8. django(七)之数据库表的单表-增删改查QuerySet,双下划线

    https://www.cnblogs.com/haiyan123/p/7738435.html https://www.cnblogs.com/yuanchenqi/articles/6083427 ...

  9. $Django 模板层(模板导入,继承)、 单表*详(增删改查,基于双下划线的查询)、static之静态文件配置

    0在python脚本中使用django环境 import osif __name__ == '__main__':    os.environ.setdefault("DJANGO_SETT ...

随机推荐

  1. umlの类图

    版权声明:本文为博主原创文章,若要转载请注明出处!^_^ https://blog.csdn.net/u010892841/article/details/24844825 类图class diagr ...

  2. 深度优先搜索(深搜)——Deep First Search【例题:迷宫】

           深度优先搜索 基本思想:先选择一种可能情况向前探索,在探索过程中,一点那发现原来的选择是错误的,就退回一步重新选择,继续向前探索,(回溯)反复进行. [例题]迷宫问题           ...

  3. 2018-03-21 11:34:44 java脚本批量转换java utf-8 bom源码文件为utf-8编码文件

    package com.springbootdubbo; import java.io.*;import java.util.ArrayList;import java.util.List; /** ...

  4. python语言验证码识别,以后不用老输入验证码了。

    1.Python 3.6 安装包 1.要加环境变量 2.pip安装PIL库 3.pip安装pytesseract模块 2.tesseract-ocr-setup-4.00.00dev.exe   -- ...

  5. DBCacheServer升级

    前段时间完成了该服务的设计的功能,花了很多时间和经历,最终完成了一个版本,已经测试了:现在后期再次在以前的基础上,完成了一些扩展. 1.扩展了内存存储 最初版本只是采用了gauva cache进行存储 ...

  6. Navicat for Mysql中错误提示索引过长1071-max key length is 767 byte

    1.建用户信息表 tb_person_info create table tb_person_info( user_id int(10) auto_increment, `name` varchar( ...

  7. jquery表单属性筛选元素

    $(":button") 选择所有按钮元素类型为按钮的元素. 等于$('input[type="button"]') $(":checkbox&quo ...

  8. cc++面试------17道经典面试题目分析

    以下是C/C++面试题目,共计17个题目,其中涵盖了c的各种基础语法和算法, 以函数接口设计和算法设计为主.这17个题目在C/C++面试方面已经流行了多 年,大家需要抽时间掌握好,每一个题目后面附有参 ...

  9. CF605A Sorting Railway Cars(递推)

    题目描述 An infinitely long railway has a train consisting of n cars, numbered from 1 to n (the numbers ...

  10. Java : JPA相关以及常用注解

    SpringDataJPA自定义的查询方法 定义规范       And 并且 Or 或     Is,Equals 等于 Between 两者之间 LessThan 小于 LessThanEqual ...