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

使用UserCreationForm注册后,Admin User model未更新新记录

Django UserCreationForm 注册后Admin无新用户的问题排查与修复

核心问题分析

你的代码存在两个关键错误,导致用户注册后Admin面板无法看到新用户:

  1. 未处理GET请求的表单初始化
    当用户首次访问页面(GET请求)时,视图中未创建form实例,会直接抛出NameError,页面无法正常加载,表单提交流程根本无法触发。

  2. 表单验证成功后未重定向
    即便表单验证通过并保存了用户,视图直接返回渲染页面,没有重定向操作,不仅可能导致重复提交,也无法确认注册流程是否正常完成。


修复后的视图代码

from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm

def home(request):
    if request.method == "POST":
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            # 注册成功后重定向到首页或登录页面,避免重复提交
            return redirect('home')
    else:
        # GET请求时初始化空表单,确保页面正常加载
        form = UserCreationForm()
    context = {'form': form}
    return render(request, 'main/index.html', context)

额外检查项

  • 确认admin.py中已注册User模型(Django默认已注册,可检查是否有以下代码):
    from django.contrib.auth.models import User
    from django.contrib import admin
    
    admin.site.register(User)
    
  • 执行数据库迁移命令,确保模型变更同步到数据库:
    python manage.py makemigrations
    python manage.py migrate
    
  • 在模板中添加错误提示,排查表单验证失败的问题:
    在表单代码后加入以下内容:
    {% if form.errors %}
        <div style="color: red;">
            {% for field in form %}
                {% for error in field.errors %}
                    <p>{{ field.label }}: {{ error }}</p>
                {% endfor %}
            {% endfor %}
            {% for error in form.non_field_errors %}
                <p>{{ error }}</p>
            {% endfor %}
        </div>
    {% endif %}
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 22:35:07