Django会员注册添加管理员审核准入流程的实现方案咨询
Django 注册用户管理员审核功能实现方案
步骤1:扩展用户模型新增审核状态字段
首先继承Django自带的AbstractUser扩展用户模型,新增审核状态字段:
# 你的应用/models.py from django.contrib.auth.models import AbstractUser from django.db import models class CustomUser(AbstractUser): # 审核状态默认未通过 is_approved = models.BooleanField(default=False, verbose_name="管理员审核通过")
修改项目settings.py配置,指定自定义用户模型:AUTH_USER_MODEL = "你的应用名.CustomUser"
注意:如果已经存在历史用户数据,执行makemigrations和migrate生成字段后,需要批量将现有正常用户的is_approved字段设为True,避免老用户无法正常访问
步骤2:调整注册逻辑,禁止新用户注册后自动登录
修改注册视图,用户注册成功后不执行登录操作,直接跳转至待审核提示页:
# 你的应用/views.py from django.shortcuts import render, redirect from .forms import CustomUserCreationForm def register(request): if request.method == "POST": form = CustomUserCreationForm(request.POST) if form.is_valid(): form.save() # 注释/删除原本的自动登录逻辑:login(request, user) return redirect("pending_approval") else: form = CustomUserCreationForm() return render(request, "register.html", {"form": form})
你需要自行配置pending_approval对应的路由和提示模板,内容可自定义为“您的账号正在等待管理员审核,审核通过后即可正常访问平台”
步骤3:新增全局访问拦截,未审核用户禁止访问核心页面
通过中间件做全局权限校验,避免每个视图单独加判断逻辑:
# 你的应用/middleware.py from django.shortcuts import redirect from django.urls import reverse class ApprovalCheckMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): # 放行无需审核的路径:登录、注册、待审核页、admin后台、静态资源 allowed_paths = [ reverse("login"), reverse("register"), reverse("pending_approval"), "/admin/", "/static/" ] if request.path in allowed_paths or request.path.startswith("/admin/") or request.path.startswith("/static/"): return self.get_response(request) # 已登录但未审核的用户统一跳转至待审核页 if request.user.is_authenticated and not request.user.is_approved: return redirect("pending_approval") return self.get_response(request)
在settings.py的MIDDLEWARE列表中新增中间件,需要放在SessionMiddleware和AuthenticationMiddleware之后:
MIDDLEWARE = [ # 其他默认中间件保持不变 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', # 新增审核校验中间件 '你的应用名.middleware.ApprovalCheckMiddleware', ]
步骤4:配置Admin后台支持管理员审核操作
在admin后台注册自定义用户模型,开放审核状态编辑权限:
# 你的应用/admin.py from django.contrib import admin from django.contrib.auth.admin import UserAdmin from .models import CustomUser class CustomUserAdmin(UserAdmin): # 用户列表页展示审核状态 list_display = UserAdmin.list_display + ("is_approved",) # 新增审核状态编辑项 fieldsets = UserAdmin.fieldsets + ( ("审核设置", {"fields": ("is_approved",)}), ) # 新增批量审核通过操作 actions = ["approve_selected_users"] def approve_selected_users(self, request, queryset): queryset.update(is_approved=True) approve_selected_users.short_description = "批量审核通过选中用户" admin.site.register(CustomUser, CustomUserAdmin)
可选优化
- 可新增邮件通知逻辑,用户注册后给管理员发审核提醒,用户审核通过后给用户发访问通知
- 可在待审核页面添加进度查询、联系管理员入口
内容的提问来源于stack exchange,提问作者leesuccess
相关产品推荐
相关产品推荐

