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

如何修复Django中‘SignUpView is missing a QuerySet’错误

如何修复Django中‘SignUpView is missing a QuerySet’错误

嘿,我一眼就揪出问题啦!这个ImproperlyConfigured错误主要有两个关键原因,咱们一步步来解决:

1. 视图类里的低级拼写错误(最直接的诱因)

看你views.py里的SignUpView类,你写成了from_class,但Django通用视图里要求的属性名是form_class——少打了一个m!Django找不到正确的表单类绑定,自然就抛出配置错误了。

修正后的views.py代码:

from django.urls import reverse_lazy
from django.views.generic import CreateView
from .forms import CustomUserCreationForm

class SignUpView(CreateView):
    form_class = CustomUserCreationForm  # 把from_class改成form_class
    success_url = reverse_lazy('login')
    template_name = 'registration/signup.html'

2. 必须配置自定义用户模型到全局settings

因为你用了自定义的CustomUser模型,一定要在项目的settings.py里添加这个配置,明确告诉Django放弃默认的User模型,改用你的自定义模型:

# 在项目根目录的settings.py中添加
AUTH_USER_MODEL = 'accounts.CustomUser'  # 注意:accounts是你的app名称,要和实际一致

要是漏了这一步,Django会继续用默认用户模型,和你的自定义表单、视图完全不兼容,也会触发类似的配置异常。

额外的必要检查点

  • 确认项目根urls.py已经包含了accounts的路由,并且引入了默认认证路由:
# 根urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/', include('accounts.urls')),  # 确保注册路由被包含
    path('accounts/', include('django.contrib.auth.urls')),  # 这行负责login、logout等默认认证页面
]
  • 确认signup.html的路径正确:要放在accounts/templates/registration/signup.html(或者你配置的模板目录对应路径下)

按上面的步骤改完,再点Sign Up按钮应该就能正常进入注册页面啦!

备注:内容来源于stack exchange,提问作者Souhil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 20:18:02