首页
学习
活动
专区
工具
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 中创建一个用户界面来计算速度,可以通过以下步骤完成。这个速度计算器将允许用户输入距离和时间,计算并显示速度。...一、问题背景一位 Django 新手希望使用 Django 构建一个用户界面,以便能够计算速度(速度 = 距离/时间)。用户创建了一个名为 "speed" 的 Django 项目。...但是,在运行服务器时遇到了错误,无法获取速度的用户界面。二、解决方案1、检查 Django 配置首先,需要检查 Django 的配置是否正确。...确保您已将 speed 应用程序的视图函数添加到项目的视图文件中。...确保您已在项目中创建了一个名为 "speed.html" 的模板文件,并且该文件包含了正确的 HTML 代码。

4910

Django 中的用户身份验证和权限管理:设计与实现指南

在Web应用程序开发中,用户身份验证和权限管理是至关重要的方面。Django作为一个功能强大且全面的Web框架,提供了许多内置的工具和库,使得在应用程序中实现用户身份验证和权限管理变得相对简单。...本文将探讨在Django中如何设计和实现一个健壮的用户身份验证系统和权限管理系统。 用户身份验证 用户身份验证是确保用户是其所声明的身份的过程。...Django提供了内置的用户身份验证系统,可以轻松地集成到您的应用程序中。 创建用户 首先,让我们看看如何创建用户并管理他们的身份验证。...总结 在这篇文章中,我们深入探讨了在Django中构建安全可靠的Web应用所涉及的关键方面。我们从用户身份验证和权限管理开始,介绍了如何使用Django的内置功能创建用户、进行身份验证以及管理权限。...我们讨论了如何使用装饰器保护视图,并演示了如何创建自定义权限和动态权限检查。接着,我们探讨了如何设计和实现基于角色的权限管理系统,以及如何在前端界面动态显示功能。

1.5K20
  • 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

    89320

    django自带权限机制

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

    1.5K30

    Python的Admin Panels 库详解

    无论是管理用户数据,还是监控系统状态,一个强大而灵活的Admin Panel都能够帮助开发者和管理员高效地完成各种操作。...我们将分析每个库的特点、功能以及如何在实际项目中进行配置和使用。什么是Admin PanelAdmin Panel,顾名思义,是一个供管理员使用的面板,通常用于管理和监控应用程序的数据和状态。...在Web开发中,Admin Panel通常是一个集成了大量管理功能的后端系统,包括但不限于用户管理、数据增删改查、权限控制、系统监控等。...Admin Panel的功能数据管理:提供图形化界面进行数据库的增、删、改、查操作。权限管理:设定不同管理员的权限级别,确保敏感数据的安全。日志记录:记录用户的操作和系统事件,方便追踪问题和进行审计。...它通过与Django的模型系统紧密集成,自动为每个模型创建增、删、改、查的界面。Django Admin不仅提供了丰富的功能,而且能够高度自定义。

    1.2K10

    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

    【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') # 只允许拥有创建用户的权限的用户

    76050

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

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

    17010

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

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

    11800

    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 指定命令

    1K10

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

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

    5K30

    Django 学习笔记之后台管理

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

    69520

    如何在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.8K10

    103-Django开发投票选举系统

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

    16010

    Django权限机制的实现

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

    1.1K10

    Django(4)操作指令大全

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

    55820

    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有相应的翻译)。 用刚刚创建的管理员账号登录,会进入管理员页面。

    31130

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

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

    15700
    领券