You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Admin面板不显示注册用户问题排查求助

问题排查与解决方案

1. 检查自定义User模型的Admin注册

你用了自定义User模型,但如果没在userauths/admin.py里注册它,Django Admin根本不会显示这个模型的用户记录。

解决:
在userauths/admin.py里添加这段代码:

from django.contrib import admin
from .models import User

admin.site.register(User)

要是想自定义Admin显示的内容,可以用UserAdmin扩展:

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User

class CustomUserAdmin(UserAdmin):
    list_display = ('username', 'email', 'is_active', 'is_staff')
    fieldsets = (
        (None, {'fields': ('username', 'password')}),
        ('个人信息', {'fields': ('email',)}),
        ('权限设置', {'fields': ('is_active', 'is_staff', 'is_superuser')}),
    )

admin.site.register(User, CustomUserAdmin)

2. 补全表单的密码字段

你的UserRegisterForm继承自UserCreationForm,但Meta里的fields只写了username和email,而UserCreationForm必须包含password1和password2两个密码字段。这会导致模板渲染的表单没有密码输入框,用户提交时表单验证不通过,form.save()根本不会执行,自然不会生成用户记录。

解决:
修改forms.py的fields配置:

class UserRegisterForm(UserCreationForm):
    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']

这样模板里的{{form.as_p}}就会渲染出密码输入框,表单验证通过后就能正常创建用户。

3. 补充表单验证失败的反馈(可选但实用)

当前视图没有处理表单验证失败的情况,用户提交无效表单时不会收到任何提示。可以优化视图逻辑:

def register(request):
    if request.method == "POST":
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            form.save()
            # 注册成功后可跳转到登录页,需提前在urls中配置login路由
            # return redirect('login')
    else:
        form = UserRegisterForm()
        
    context = {
        'form': form,
    }
    return render(request, "userauths/register.html", context)

模板中的{{form.as_p}}会自动渲染表单错误信息,无需额外修改模板代码。

4. 确认自定义User模型的全局配置

务必在项目的settings.py中配置好自定义User模型:

AUTH_USER_MODEL = 'userauths.User'

如果缺少这行配置,Django会使用默认的auth.User模型,你通过表单创建的自定义模型用户不会出现在Admin面板中。


内容的提问来源于stack exchange,提问作者Wlm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 05:25:21