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

如何在django中创建2级管理员用户,其中每个用户只管理他创建的用户?

在Django中创建2级管理员用户,其中每个用户只能管理他创建的用户,可以通过以下步骤实现:

  1. 首先,在Django项目中创建一个自定义的User模型,该模型继承自AbstractUserAbstractBaseUser,并添加一个字段用于指定用户的上级管理员。
代码语言:txt
复制
from django.contrib.auth.models import AbstractUser
from django.db import models

class CustomUser(AbstractUser):
    manager = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True)
  1. 在项目的settings.py文件中,将自定义的User模型设置为默认的认证用户模型。
代码语言:txt
复制
AUTH_USER_MODEL = 'your_app.CustomUser'
  1. 创建一个自定义的管理器(Manager)来过滤每个管理员用户所管理的用户。
代码语言:txt
复制
from django.contrib.auth.models import UserManager

class CustomUserManager(UserManager):
    def get_queryset(self):
        queryset = super().get_queryset()
        if not self.request.user.is_superuser:
            queryset = queryset.filter(manager=self.request.user)
        return queryset
  1. 在每个需要使用管理员用户管理用户的视图函数中,使用自定义的管理器来过滤用户。
代码语言:txt
复制
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
from your_app.models import CustomUser

@login_required
def user_list(request):
    users = CustomUser.objects.all()
    return render(request, 'user_list.html', {'users': users})
  1. 创建一个表单用于创建用户,并在表单中设置当前登录用户为上级管理员。
代码语言:txt
复制
from django import forms
from your_app.models import CustomUser

class UserCreationForm(forms.ModelForm):
    class Meta:
        model = CustomUser
        fields = ['username', 'password', 'manager']
        widgets = {'manager': forms.HiddenInput()}
    
    def __init__(self, *args, **kwargs):
        self.request = kwargs.pop('request')
        super().__init__(*args, **kwargs)
        self.fields['manager'].initial = self.request.user
  1. 在创建用户的视图函数中,使用自定义的表单来创建用户。
代码语言:txt
复制
from django.contrib.auth.decorators import login_required
from django.shortcuts import render, redirect
from your_app.forms import UserCreationForm

@login_required
def create_user(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST, request=request)
        if form.is_valid():
            form.save()
            return redirect('user_list')
    else:
        form = UserCreationForm(request=request)
    return render(request, 'create_user.html', {'form': form})

通过以上步骤,你可以在Django中创建2级管理员用户,其中每个用户只能管理他创建的用户。请注意,以上代码仅为示例,你可能需要根据你的具体需求进行适当的修改和调整。

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

相关·内容

Django内置权限扩展案例

Django内置权限无法满足需求时候就自己扩展吧~ 背景介绍 overmind项目使用了Django内置权限系统,Django内置权限系统基于model层做控制,新model创建后会默认新建三个权限...原本overmind只管理了我们自己部门数据库,权限设置只针对具体功能不针对细粒度数据库实例,例如用户A 有审核权限,那么用户A 可以审核所有的DB,此时使用内置权限系统就可以满足需求了,但随着系统不断完善要接入其他部门数据库管理...,也就是需要把每一条DB信息与有权限操作用户进行关联,为了方便操作,我们考虑把DB跟用户组关联,在用户组里用户都有权限,而操作类型经过分析主要有两类读和写,那么需要给每个MySQL实例添加两个字段分别记录对此实例有读和写权限用户组...如上图列表页,每个用户进入系统后只能查看自己有读权限MySQL实例列表,管理员能查看所有,代码如下: def mysql(request): if request.method == 'GET...:获取登录用户所有组,然后循环查询每个组有读取权限数据库实例,最后把每个组有权限读数据库实例进行合并返回 获取登录用户所有组用到了ManyToMany查询方法:request.user.groups.all

86720

django自带权限机制

以博客系统为例,博客系统用户可分为『管理员』、『编辑』、『作者』和『读者』四个用户组;博客系统管理员和编辑具有查看、修改和删除所有的文章权限,作者只能修改和删除自己写文章,而读者则只有阅读权限。...1.2 Django权限项 Django用permission对象存储权限项,每个model默认都有三个permission,即add model, change model和delete model...Django 自带权限机制应用 2.1 Permission 如上文所述,Django定义每个model后,默认都会添加该modeladd, change和delete三个permission,自定义...permission都是django.contrib.auth.Permission类型实例,该类型包含三个字段name, codename 和 content_type,其中 content_type...name 在model创建自定义权限,从系统开发角度,可理解为创建系统内置权限,如果需求涉及到用户使用系统时创建自定义权限,则要通过下面方法: from myapp.models import

1.4K30

Python Django框架笔记(五):模型

#前言部分来自Django Book (一)    前言 大多数web应用本质上: 1、 每个页面都是将数据库数据以HTML格式进行展现。 2、 向用户提供修改数据库数据方法。...在这个模式, Model 代表数据存取层,View 代表是系统中选择显示什么和怎么显示部分,Controller 指的是系统根据用户输入并视需要访问模型,以决定使用哪个视图那部分。...C,根据用户输入委派视图部分,由 Django 框架根据 URLconf 设置,对给定 URL 调用适当 Python 函数。...很不幸,这是对 MVC 不同诠释所引起错误认识。 在 Django 对 MVC 诠释,视图用来描述要展现给用户数据;不是数据 如何展现 ,而且展现 哪些 数据。...会创建一个一个额外表(多对多连接表)来处理他们之间映射关系 ?

2K60

​第 07 篇:创作后台开启,请开始你表演!

它所言,我们确实还没有发布任何文章,本节我们将使用 django 自带 admin 后台来发布我们博客文章。...创建 admin 后台管理员账户 要想进入django admin 后台,首先需要创建一个超级管理员账户。...在支持 Markdown 语法部分中将介绍如何在文章插入图片方法。...文章创建时间和修改时间应该根据当前时间自动生成,而现在是由人工填写,还有就是文章作者应该自动填充为后台管理员用户,那么这些自动填充数据字段就不需要在新增文章表单中出现了。...接下来是填充创建时间,修改时间和文章作者值。之前提到,文章作者应该自动设定为登录后台发布此文章管理员用户

1.1K20

109-Django开发考试与问卷系统

验证后,用户账户应被标记为活跃状态,并允许用户进行后续操作。用户可以随时在账户设置重新验证或更改其验证信息。测试模块题目设置管理员或具有相应权限用户应能够创建和编辑测试题目。...选项设置对于选择题类型题目,管理员应能够添加和编辑选项。每个选项都应与题目相关联,并包含文本内容和可能图片或视频。系统应支持正确选项标记,以便在评估用户答案时使用。...权限模块用户权限系统应实施角色和权限管理,以便对不同用户群体进行访问控制。角色可以是管理员、教师、学生等,每个角色应具有不同权限级别。...可考虑使用Django内置权限系统或第三方库(django-guardian)来实现更复杂权限管理。...数据库选择:SQLite3是一个轻量级数据库,适用于开发和测试环境。但在生产环境,建议使用更强大和可扩展数据库,MySQL。

7600

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

二、环境准备 假设我们此时有一个视图用于创建 hr管理员,不受csrf_token保护情况 创建注册模板页面 {% extends 'base.html' %} {% block content...import messages @csrf_exempt # 设置为不处理csrf攻击 @permission_required('auth.add_user') # 只允许拥有创建用户权限用户...path('create_hr_user', jobs.views.create_hr_user, name='create_hr_user') ) 表单演示 三、模拟黑客‍ 现在让我们看看如何在管理员不知情情况下添加用户...攻击者提供一个页面,诱导管理员点击该页面,此时改url会自动提交,改url会直接调用之前创建管理员页面,创建用户 作为黑客,我现在创建一个页面,在超级管理员点击改页面链接便会自动创建....带回服务器,服务端检查token,合法则则正常处理请求 修改原视图 — 删除@csrf_exempt : @permission_required('auth.add_user') # 只允许拥有创建用户权限用户

72650

关于“Python”Django 管理网站核心知识点整理大全52

在本节,我们将建立管理网站,并通过它 使用模型Topic来添加一些主题。 1. 创建超级用户 Django允许你创建具备所有权限用户——超级用户。权限决定了用户可执行操作。...优秀管理员会小心对待用户敏感信息,因为用户对其访问应用程序有极 大信任。...向管理网站注册模型 Django自动在管理网站添加了一些模型,User和Group,但对于我们创建模型,必须 手工进行注册。...在第一个方框输入Chess,再单击Save,这将返回到主题管理页面,其中包含刚创建主题。 下面再创建一个主题,以便有更多数据可供使用。...外键是一个数据库术语,它引用了数据库另一条记录;这些代码将每个条目关联 到特定主题。每个主题创建时,都给它分配了一个键(或ID)。

13510

Django实战-信息资讯-CMS权限管理

权限是能够约束用户行为和控制页面显示内容一种机制。一个完整权限应该包含3个要素: 用户,对象和权限,即什么用户对什么对象有什么样权限。 对于本次项目中应用,可以分为编辑组、财务组、管理员。...在 INSTALLED_APP 里添加好 auth 应用之后,在执行完makemigrations 和 migrate 命令后,Django 就会为每一个安装app模型(Model)自动创建4个可选权限...其作用在权限控制时可以批量对用户权限进行管理和分配,而不用一个一个用户分配,节省工作量。将一个用户加入到一个Group后,该用户就拥有了该Group所分配所有权限。...django.contrib.auth.models.Group 定义了用户模型, 每个用户组拥有 id 和 name 两个字段, 该模型在数据库被映射为 auth_group 数据表。...④ 自定义 Command 命令 from django.core.management.base import BaseCommand Django 对于命令添加有一套规范,可以为每个app 指定命令

96710

103-Django开发投票选举系统

Django 投票选举系统是一个基于 Python 3.11 和 Django 框架全功能投票应用程序。该系统提供了丰富功能和用户友好界面,以满足投票选举各种需求。...以下是该系统主要功能概括:用户认证用户可以通过注册功能创建账户。已注册用户可以登录系统。支持第三方登录配置, Google、Facebook 等。首页显示当前正在进行投票列表。...提供图形化展示功能,让用户更直观地了解投票结果。用户管理管理员可以管理所有用户账户,包括查看、编辑和删除用户信息。管理员可以为用户分配不同权限级别,控制用户对投票访问和操作权限。...权限分配不同用户角色(普通用户、问卷所有者、管理员)具有不同权限。权限系统确保只有具有相应权限用户才能执行特定操作。扩展性系统具备良好扩展性,可以根据实际需求添加新功能和模块。...支持与第三方系统集成,邮件通知、社交分享等。此 Django 投票选举系统旨在提供一个灵活、易用且功能强大投票平台,满足各种投票选举场景需求。

10910

学习版pytest内核测试平台开发万字长文入门篇

fixtures名字是固定,就像pytestconftest.py一样,只认这个名字。user.json存放数据: ? 包括管理员用户、角色权限、管理员角色对照关系。其中角色权限数据共3条: ?...新增用户,分别创建管理员、开发、测试3个角色用户。 使用新用户登录,管理员用户能登录成功,开发和测试由于没有后台管理权限,点击登录接口后会提示“无菜单权限”。...修改用户,修改用户名、密码,修改测试角色用户管理员角色,重新登录,能看到用户名、密码已更新为修改后用户名、密码,并且管理员角色生效,能登进去看到后台管理功能。...其中url是隐藏了,点击右上角环境旁边眼睛图标查看: ? 修改已创建接口mock数据入口在Examples: ? 点击Default: ?...后端代码完全是我自己写,先学了一遍DjangoDjango REST framework官方教程,其中Django认证系统并不鸡肋反而很重要》这篇文章在腾讯云+社区2020年度征文活动,被评选为了最受喜爱作者奖

4.9K30

Django 学习笔记之后台管理

主要是介绍下 Django 默认管理后台以及一些实用后台管理系统第三方应用。 1 前言 每个网站无论大小,大型电商网站也好,个人博客也罢,它们都是一个管理后台。...2 激活管理界面 其实 Django 默认帮我们激活 admin 管理后台。不知你还记得上次操作? 当新建创建应用,需要将刚创建 app 加入到 setting.py 文件。...'demo', # 我们新创建 app ] 其中django.contrib.admin就是管理后台。...因此,我们可以知道 admin 其实也是一个应用,只不过它是 Django 自带。 我们只需要做一件事,那就是创建用户。在项目目录下,打开终端,执行以下命令来创建超级管理员。...python manage.py createsuperuser 打开终端之后,依次输入用户名,邮箱和密码即可创建。成功创建管理员结果如下: Django 在密码校验这块做还不错。

64320

Django(4)操作指令大全

前言 我们掌握了如何在命令提示符或PyCharm下创建Django项目和项目应用,无论是创建项目还是创建项目应用,都需要输入相关指令才能得以实现,这些都是Django内置操作指令。...在PyCharmTerminal输入指令python manage.py help并按回车键,即可看到相关指令信息 Django操作指令共有30条,这里挑选常用指令以表格形式展示,如下...指令 说明 createsuperuser 为内置用户创建超级管理员账号 flush 清空数据表数据信息 makemigrations 从模型对象创建数据迁移文件并保存在Appmigrations...文件夹 migrate 根据迁移文件内容,在数据库里生成相应数据表 shell 进入DjangoShell模式,用于调试项目功能 startapp 创建项目应用App startproject 创建...Django项目 runserver 在本地计算机上启动Django项目 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/165819.html原文链接:https

51620

何在Ubuntu 18.04上安装Django Web Framework

虚拟环境允许您在项目目录安装Django,而不会影响较大系统,以及其他每个项目的自定义和包。这通常是使用Django最实用和最值得推荐方法。...我们将向您展示如何在我们将使用venv模块创建虚拟环境安装Django,该模块是标准Python 3库一部分。此工具允许您创建虚拟Python环境并安装Python包,而不会影响系统其余部分。...startproject将在您当前工作目录创建一个目录,其中包括: 管理脚本,manage.py可用于管理各种特定于Django任务。 包含实际项目代码目录(与项目同名)。...在方括号,列出与Django服务器关联IP地址或域名。每个项目都应该在引号列出,单独条目用逗号分隔。如果您需要整个域和任何子域请求,请在条目的开头添加一个句点: . . ....:8000/admin/ 这将带您进入登录屏幕: 如果您输入刚刚创建管理员用户名和密码,您将可以访问该站点管理员部分: 查看完默认站点后,可以通过在终端键入CTRL-C来停止开发服务器。

2.7K10

107-Django开发医院管理系统(医生-患者-医院管理员)

环境搭建安装Python和Django创建一个新Django项目和应用。2....设计数据库模型用户模型:扩展DjangoAbstractUser模型,添加必要字段role(角色)来区分患者、医生和管理员。医生模型:包含医生专业信息,姓名、专业、联系方式等。...用户认证和权限使用Django内置用户认证系统。创建自定义权限和角色(医生、管理员),并将它们关联到用户模型。使用Django权限系统来限制不同角色用户访问不同视图。4....视图和模板创建视图来处理各种用户请求,登录、注册、查看医生列表、查看患者信息、生成发票等。使用Django模板系统来渲染HTML页面,并包含必要JavaScript和CSS文件。5....表单处理创建Django表单来处理用户输入,注册表单、登录表单、医生申请表单等。在视图中验证表单数据,并将其保存到数据库。6. PDF生成使用xhtml2pdf库来将HTML页面转换为PDF文件。

8200

Django权限机制实现

以博客系统为例,博客系统用户可分为『管理员』、『编辑』、『作者』和『读者』四个用户组;博客系统管理员和编辑具有查看、修改和删除所有的文章权限,作者只能修改和删除自己写文章,而读者则只有阅读权限。...1.2 Django权限项 Django用permission对象存储权限项,每个model默认都有三个permission,即add model, change model和delete model...2 Django 自带权限机制应用 2.1 Permission 如上文所述,Django定义每个model后,默认都会添加该modeladd, change和delete三个permission...permission都是django.contrib.auth.Permission类型实例,该类型包含三个字段name, codename 和 content_type,其中 content_type...在model创建自定义权限,从系统开发角度,可理解为创建系统内置权限,如果需求涉及到用户使用系统时创建自定义权限,则要通过下面方法: from myapp.models import BlogPost

1.1K10

Django快速入门——投票程序(1、2)创建项目&模型

我们将创建一个投票网站, • 用户可以查看和投票 • 你可以管理投票内容。 如果你看过了上一篇Django快速入门,应该已经安装好了Django,我们开始吧。...You're at the polls index.") 2.在polls/urls.py创建映射。用户打开网站url时,Django能够调用views.index函数返回响应。...mysite/settings.py文件,我们可以设置一些东西,将TIME_ZONE 改为当前时区。 INSTALLED_APPS包括了会在你项目中启用所有Django应用。...创建一个管理员账号 python manage.py createsuperuser 然后按照提示,输入用户名,邮件,密码,重复密码。...因为翻译功能默认是开启,如果你设置了 LANGUAGE_CODE,登录界面将显示你设置语言(如果Django有相应翻译)。 用刚刚创建管理员账号登录,会进入管理员页面。

24730

mezzanine,一个无敌 Python 库!

它提供了一个强大平台,使得开发者能够快速搭建和管理网站。Mezzanine结合了Django强大功能与便捷用户界面,使其成为构建现代网站理想选择。...# 文件上传通常通过Mezzanine管理界面进行,以下是如何在代码引用已上传文件 from mezzanine.core.models import File # 获取并显示所有已上传文件...Mezzanine提供了一个完整用户权限和认证系统,使得网站管理员可以控制不同用户访问权限。...动态表单构建 Mezzanine支持动态创建表单,这允许用户在后台管理界面轻松创建和管理自定义表单,无需编写任何代码。...# 在Djangosettings.py添加rest_framework到INSTALLED_APPS INSTALLED_APPS += ('rest_framework',) # 创建一个API

8210

DJANGO用户认证系统

Djang对应User类只有一个,“超级管理员”(superuser)或“普通用户”(staff)是用户属性对象,而不是不同类。...2.创建用户 创建一个新用户对象,实际上是实例化处一个User类对象。...user.first_name="kevin" user.last_name="guo" user.save() 3.创建超级管理员用户 为安全起见,超级管理员用户无法通过如上方法创建django为我们提供...manage.py 工具包方法可以创建一个超级管理员用户 python manage.py createsuperuser --username=kevinguo --email=kevinguo@...它使用username和password作为参数进行验证,对每个身份验证后端(setting.py authentication backend)进行一一检查,如果有一个认证后端返回一个user对象

1.4K20

DJANGO用户认证系统

Djang对应User类只有一个,“超级管理员”(superuser)或“普通用户”(staff)是用户属性对象,而不是不同类。...2.创建用户 创建一个新用户对象,实际上是实例化处一个User类对象。...user.first_name="kevin" user.last_name="guo" user.save() 3.创建超级管理员用户 为安全起见,超级管理员用户无法通过如上方法创建django为我们提供...manage.py 工具包方法可以创建一个超级管理员用户 python manage.py createsuperuser --username=kevinguo --email=kevinguo@...它使用username和password作为参数进行验证,对每个身份验证后端(setting.py authentication backend)进行一一检查,如果有一个认证后端返回一个user对象

1.1K10
领券