首先简单了解一下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. 一、安装 IntelliJ IDEA

    首先,双击打开 IntelliJ IDEA 的快捷方式: 在此,需要说明: 如果咱们的电脑曾经安装过 IntelliJ IDEA,并且你在卸载 IntelliJ IDEA 的时候没有删除其配置文件目录 ...

  2. phpstorm的主题相关

    下载地址: http://phpstorm-themes.com/ 安装方法 JAR文件 导航->file->Import Settings->然后选择你刚才下载的JAR文件-> ...

  3. SqlSugar操作Oracle的dblink时候@符号问题

    用的这个版本,作者忘记删除Oracle中的代码了....下个版本作者应该就会更新了,到时候就不会存在这个问题,这里记录一下. 引用nuget出现的问题: 使用dblink的时候,查询的时候需要带@符号 ...

  4. Spring知识点总结(四)之SpringAOP基础

        1. Spring aop中的基本概念        • 连接点(Joinpoint):在程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常的时候.在Spring AOP中,一个连接 ...

  5. Django-rest-framework(六)filter,ordering,search

    filter queryset 使用request.user相关的queryset class PurchaseList(generics.ListAPIView): serializer_class ...

  6. C++指针数组,二级指针和函数指针的练习

    1.编一程序,将字符串“Hello,C++!”赋给一个字符数组, 然后从第一个字母开始间隔地输出该串(请用指针完成). 代码如下 #include<iostream> #include&l ...

  7. 小程序swiper不显示图片

    按照文档上的代码运行后,发现图片不显示 解决办法: app.wxss文件 align-items: center;这句话删除了,运行 OK!

  8. git 上传到码云

    创建分支 在码云里创建好分支 命令行进入项目所在的目录 显示码云上的分支 git pull 选择将要编辑的分支(index-fenzhi) git checkout index-fenzhi 查看分支 ...

  9. 介绍几个PHP 自带的加密解密函数

    PHP 自带的加密解密函数 目前经常使用的加密函数有:md5(), sha1(), crypt(), base64_encode(), urlencode() . 其中 md5(), sha1(), ...

  10. laydate js动态添加时间

    $("#test2").click(function(){ var input=$('<input/>'); $("#test1").append( ...