首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在django中重写管理列名'is_staff‘和'is_superuser’?

在Django中,可以通过重写模型的UserManagerUser类来自定义管理列名is_staffis_superuser

首先,创建一个自定义的UserManager类,继承自django.contrib.auth.models.UserManager,并重写get_by_natural_key方法和create_superuser方法。在get_by_natural_key方法中,将is_staffis_superuser改为自定义的列名。在create_superuser方法中,也需要修改相应的列名。

代码语言:txt
复制
from django.contrib.auth.models import UserManager

class CustomUserManager(UserManager):
    def get_by_natural_key(self, username):
        kwargs = {self.model.USERNAME_FIELD + '__iexact': username}
        return self.get(**kwargs)

    def create_superuser(self, username, email=None, password=None, **extra_fields):
        extra_fields.setdefault('is_staff', True)
        extra_fields.setdefault('is_superuser', True)
        return self._create_user(username, email, password, **extra_fields)

接下来,创建一个自定义的User类,继承自django.contrib.auth.models.AbstractUser,并指定objects为上一步创建的CustomUserManager类。

代码语言:txt
复制
from django.contrib.auth.models import AbstractUser

class CustomUser(AbstractUser):
    objects = CustomUserManager()

最后,在项目的settings.py文件中,将AUTH_USER_MODEL设置为自定义的User类。

代码语言:txt
复制
AUTH_USER_MODEL = 'your_app.CustomUser'

现在,你可以使用自定义的列名is_staffis_superuser来管理用户的权限了。

注意:以上是一种在Django中重写管理列名的方法,但并不推荐频繁修改默认的列名,因为这可能会导致与Django的其他部分不兼容。在实际开发中,应根据具体需求谨慎使用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django(60)Django内置User模型源码分析及自定义User

User模型源码分析 class User(AbstractUser): """ Django 身份验证系统的用户由该模型表示 需要用户名密码。...对于一些想要删除账号的数据,我们设置这个值为False就可以了,而不是真正的从数据库删除。 is_superuser:是否是超级管理员。如果是超级管理员,那么拥有整个网站的所有权限。...('is_superuser', True) # 如果调用此方法,is_staff必须为True,否则会抛出异常 if extra_fields.get...通过django.contrib.auth.authenticate即可实现。这个方法只能通过usernamepassword来进行验证。...,而不是使用usernamepassword objects = UserManager() 然后再在settings配置好AUTH_USER_MODEL=yourapp.User。

1.7K20

15.Django基础十一之认证系统

Permission属于一种多对多的关系。 is_staff:是否可以进入到admin的站点。代表是否是员工。...对于一些想要删除账号的数据,我们设置这个值为False就可以了,而不是真正的从数据库删除。 is_superuser:是否是超级管理员。如果是超级管理员,那么拥有整个网站的所有权限。...# password,而不是使用usernamepassword objects = UserManager() # 重写UserManager class UserManager...其他常用属性含义如下:       is_staff : 用户是否拥有网站的管理权限.       ...的值为False,如果是create_superuser()方法创建的用户,那么is_superuser的值为True,所以我们可以通过这个字不同的值来判断用户是否为管理员啊等操作,这两个方法的username

2.1K20
  • Django | 安全防护】CSRF跨站伪请求和SQL注入攻击

    =False, username=username, is_staff=True, is_active=True) user.set_password(password)...path('create_hr_user', jobs.views.create_hr_user, name='create_hr_user') ) 表单演示 三、模拟黑客‍ 现在让我们看看如何在管理员不知情的情况下添加用户...攻击者提供一个页面,诱导管理员点击该页面,此时改url会自动提交,改url会直接调用之前创建管理员的页面,创建用户 作为黑客,我现在创建一个页面,在超级管理员点击改页面链接便会自动创建....四、解决办法 我们只要使用django自带csrf 处理即可,django在处理每一个页面都会传递一个csrf_token,在表单form则需要添加{% token %} 在页面渲染出来,这样客户端页面会将...,服务在请求一个页面会在request的head头部存放csrftokn值,一般是放在cookie,当页面响应中会在response返回cookie此时服务器如果在cookie中找到所发送对应的csrftoken

    75350

    Django-auth-ldap 配置方法

    有许多丰富的配置选项可用于处理用户,组权限,便于对页面后台的控制 插件介绍地址:Django-auth-ldap 安装方法 注意:需先正确安装python3环境、pip3 Django环境 -...--- 前提: 需要先安装python-ldap > = 3.0 第一步:安装Django-auth-ldap pip install django-auth-ldap 第二步:在setting.py配置...配置如下代码: #Django-auth-ldap 配置部分 import ldap from django_auth_ldap.config import LDAPSearch,GroupOfNamesType...:这个组里的成员可以登录;is_superuser:组成员是django admin的超级管理员;is_active:组成员可以登录django admin后台,但是无权限查看后台内容 AUTH_LDAP_USER_FLAGS_BY_GROUP...= { "is_staff": "cn=test_users,ou=groups,OU=test,DC=test,DC=com", "is_superuser": "cn=test_users

    3.2K21

    Django配置Windows AD域进行账号认证

    以下为Django使用Windows AD进行账号认证的配置,代码全部配置在Django的setting.py 文件,代码如下: 1#Django-auth-ldap 配置部分 此部分代码配置在django...objectClass=groupOfNames)" 24) 25 26AUTH_LDAP_GROUP_TYPE = GroupOfNamesType() 27 28#is_staff:这个组里的成员可以登录;is_superuser...:组成员是django admin的超级管理员;is_active:组成员可以登录django admin后天,无权限 29AUTH_LDAP_USER_FLAGS_BY_GROUP = { 30..."is_staff": "cn=test_users,ou=groups,OU=test,DC=test,DC=com", 31 "is_superuser": "cn=test_users,ou...,会提示登录失败,但是在auth_user用户表,会有这个用户的属性,配置了superuser的可以登录后台,代码配置的默认账号,可以直接登录admin后天,以管理员的身份登录。

    2.4K10

    drf之认证、权限、频率

    1、认证 1.1 认证类的构建 新建一个自定义类,该类继承rest_framework.authentication的BaseAuthentication 类,重写其中的authenticate 方法...其中该方法必须重写,如不重写其中没有认证逻辑,则直接抛出异常。 为方便管理,认证类写在新建的.py文件。...这几个权限类依次是 IsAdminUser 校验Django自带用户表is_staff字段,判断认证用户是否是管理员(注意:其判断的不是is_superuser字段,而是is_staff,即该用户是职员状态是就可以通过权限认证...继承rest_framework.throttling的SimpleRateThrottle,重写get_cache_key 方法。...4 过滤与排序 4.1 过滤 安装第三方插件:pip3 install django-filter 在Django中注册app 全局配置或者局部配置。

    94341

    自定义 Django的User Model,扩展 AbstractUser类注意事项

    原文链接: http://www.weiguda.com/blog/28/ 另外一篇参考文章  Django 重写用户模型 django——重写用户模型 Django内建的User模型可能不适合某些类型的项目..., is_staff, is_active, is_superuser, last_login, and date_joined跟默认的User没什么区别, 那么你还不如仅仅替换Django的UserManager...这些方法允许管理员去控制User到管理内容的访问: is_staff 是否允许user访问admin界面 is_active 用户是否活跃。...7.自定义用户权限 如果想让在自定义用户模型包含Django的权限控制框架变得简单,Django提供了PermissionsMixin。...,is_staff,has_perm(),has_module_perms() 要在admin中注册自定义的MyUser,还需要在app的admin.py重写UserCreationFormUserChangeForm

    6.1K20

    CRM客户关系管理系统(十三) 第十三章、用户自定义认证第十四章、万能通用权限框架设计

    +  盐 account                   LADP:轻量级目录账号管理协议(集中账号管理):通过网络到LDAP服务器上进行验证 SSO:Single Sign on (单点登录)...import forms from django.contrib import admin from django.contrib.auth.models import Group from django.contrib.auth.admin...list_display = ('email', 'name','is_superuser') list_filter = ('is_superuser',) fieldsets = (...','is_active','role','user_permissions','groups','is_superuser')}), ) # add_fieldsets is not...(6)admin后台管理权限 现在访问客户列表(还有增加修改页面)是没有权限的 ? 必须在后台赋予权限才可以 ?  再访问就可以了 ?

    1.1K00

    Python Web之Django使用的几个技巧!

    最近在搭建Django站点,所以有了如下记录,与其说是Django使用技巧,不如说是记录几个Django(2.1.2版本)使用过程碰到的几个问题,学习渣在学习实践总是会出现各种莫名其妙的问题,而且比较悲哀的是...后台账号信息 解决方案一:覆盖原账号信息 直接清除原账号信息,清除数据库的管理员,重新新建超级管理员账号信息!...解决方案二:修改账号信息 cd到manage.py目录下,在Terminal执行:python manage.py changepassword your_name(其中“your_name”为你要修改密码的用户名...>>user1 = User.objects.filter(is_superuser = True) >>user2 = User.objects.filter(is_superuser = True,...is_staff = True) >>print(user1,user2) 3.更换Django数据库为Mysql数据库 如果上线网站,还是建议更改为Mysql数据库,所以这里就有了更换本地项目的sqlite3

    41730

    django 关于User模型

    Permission属于一种多对多的关系。 is_staff:是否可以进入到admin的站点。代表是否是员工。 is_active:是否是可用的。...对于一些想要删除账号的数据,我们设置这个值为False就可以了,而不是真正的从数据库删除。 is_superuser:是否是超级管理员。如果是超级管理员,那么拥有整个网站的所有权限。...通过django.contrib.auth.authenticate即可实现。这个方法只能通过usernamepassword来进行验证。...并且User.objects.all()Person.objects.all()其实是等价的。因为他们都是从User这个模型获取所有的数据。 2....但是因为我们重写了User,所以应该尽可能的模拟User模型: USERNAME_FIELD:用来描述User模型名字字段的字符串,作为唯一的标识。

    1.1K30

    Django实战-信息资讯-重构 USER 模型

    二、为 User 模型自定义管理器 继承自 BaseUserManager from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin..._create_user(telephone, username, password, **kwargs) 三、自定义用户权限 Django 提供了 PermissionsMixin。...这是一个抽象的类,可以为自定义用户模型的类的层次结构包含它。它提供所有 Django 权限类必须的方法字段。...Django 允许通过修改 settings.py 文件的 AUTH_USER_MODEL 设置覆盖默认的 User 模型,其值引用一个自定义的模型。...# AUTH_USER_MODEL 这个属性是 django 内置的,会主动到这个文件查找这个属性, # 如果找到了,那么就会使用这个属性指定的模型来作为 User 对象 # AUTH_USER_MODEL

    93220

    Django权限系统auth模块详解

    认证系统auth  auth模块是Django提供的标准权限管理系统,可以提供用户身份认证, 用户组权限管理。auth可以admin模块配合使用, 快速建立网站的管理系统。...User对象 User 对象属性:username, password(必填项)password用哈希算法保存到数据库 is_staff : 用户是否拥有网站的管理权限. is_active : 是否允许用户登录...is_staff 布尔值。指示用户是否可以访问Admin 站点。 is_active 布尔值。指示用户的账号是否激活。 is_superuser 布尔值。...auth系统无法提供对象级的权限控制, 即检查用户是否对数据表某条记录拥有增改删的权限。如果需要对象级权限控制可以使用django-guardian....管理用户权限 UserPermission通过多对多字段user.user_permissions关联,在数据库由auth_user_user_permissions数据表维护。

    1.6K20

    可重复读事务隔离级别之 django 解读

    由于django1.3(由于历史原因,目前蓝鲸体系内大多数稳定运营的工具系统用的是django1.3)该问题最为严重,本文先对django1.3环境的一个应用案例进行分析,说明问题产生的具体原因,然后说明如何有效避免类似问题...,最后介绍较新版本django事务实现原理(django1.6开始已经很好避免本文案例的大多数情况),并提供一个django1.8由于对事务使用不当造成的异常案例。...为了快速说明该问题产生的原因,这里将请求simple_test过程simple_test后台任务set_data_in_backend所执行的sql语句分别打印出来: simple_test响应请求过程执行的...`is_staff`, `auth_user`.`is_active`, `auth_user`.`is_superuser`, `auth_user`....最后,django1.8只是将这种可重复读引起问题的概率降低了很多,如果我们在事务处理不当,也会引起类似问题,django本文最开始的例子进行稍微调整,在django1.8运行一样会报错。

    1.8K00

    关于自动化平台的动态菜单设计

    比如我考虑了几个方案: 重写目前的登录校验逻辑,不使用默认的admin模板的用户 复用已有的用户模型,然后添加几个定制字段来满足需求 根据目前的功能实现,如果重写user的模型,会有较大的难度,所以第一点可行但是代价太高...在这个基础上配置一个菜单管理页面,把每个菜单的标题,url,映射信息都用户映射起来。...用户菜单之间是多对多的关联关系 所以Django的models.py的内容如下: class Menu(models.Model): menu_type_choices = (...User.objects.create(password='admin2',is_superuser=0,username='admin2',first_name='admin',last_name='...admin',email='aa@aa.com',is_staff=0,is_active=1,date_joined='2018-01-04') Menu.objects.create(menu_id

    1.2K40

    django 自带 user 字段扩展及头像上传

    django入门:环境及项目搭建》 《django入门:数据模型》 《django入门:视图及模版》 《django入门:Admin管理系统及表单》 《django入门:通用视图类重构视图》 《用django...import AbstractBaseUser # 假如我们不需要原来 User 的 username is_staff 字段,直接通过 email 作为用户名 class User(AbstractUser...需要通过 create_user create_superuser 的方法来创建用户超级用户,所以必须重写这些方法才可以,这里根据系统的 UserManager 源码进行修改 class UserManager...must have is_superuser=True.')...3 补充一下 之前在讨论群(在公众号后台回复“django”,获取入群方式),有个老铁问如何通过存在的数据库反向生成 model,因为比较简单,所以这边记顺带录下。

    2.2K30
    领券