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

Django注册报错AttributeError:auth.User已替换为accounts.User

解决AttributeError: Manager isn't available; 'auth.User' has been swapped for 'accounts.User'错误

问题根源

注册视图中使用的Django自带UserCreationForm默认依赖系统原生auth.User模型,但你的项目已通过AUTH_USER_MODEL将用户模型替换为accounts.User,导致该表单仍尝试访问已被替换的auth.User管理器,触发错误。

解决方案

1. 创建自定义用户注册表单

在accounts应用下新建forms.py文件,编写基于自定义用户模型的注册表单:

from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth import get_user_model

class CustomUserCreationForm(UserCreationForm):
    class Meta:
        model = get_user_model()
        fields = ('email',)

2. 修改注册视图,使用自定义表单

更新accounts/views.py,替换原有的UserCreationForm为自定义表单:

from django.shortcuts import render, redirect
from django.contrib.auth import login as auth_login
from django.contrib.auth import authenticate
from .forms import CustomUserCreationForm
from django.contrib import messages

def register(request):
    if request.method == 'POST':
        form = CustomUserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            messages.success(request, 'Registration successful. You can now log in.')
            return redirect('login')
    else:
        form = CustomUserCreationForm()
    return render(request, 'register.html', {'form': form})

def login_view(request):
    if request.method == 'POST':
        email = request.POST['email']
        password = request.POST['password']
        user = authenticate(request, username=email, password=password)
        if user is not None:
            auth_login(request, user)
            return redirect('homepage')
        else:
            messages.error(request, 'Invalid email or password')
    return render(request, 'login.html')

3. 确认settings.py配置

确保项目根目录的settings.py中已正确配置自定义用户模型:

AUTH_USER_MODEL = 'accounts.User'

额外优化(可选)

在login_view中,可直接传递email参数给authenticate,匹配自定义后端的参数设计,更直观:

user = authenticate(request, email=email, password=password)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 13:32:38