我创建了一个继承自的表单,UserCreationForm
并使用了基于类的视图CreateView
,当我使用 runserver 并显示表单时,底部有一个基于密码的身份验证部分,我没有注意到
表单.py
from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm
class RegisterForm(UserCreationForm):
"""Form to Create new User"""
class Meta:
model = get_user_model()
fields = ["username", "password1", "password2"]
视图.py
from django.views.generic import CreateView
from .forms import RegisterForm
from django.urls import reverse_lazy
class SignUp(CreateView):
form_class = RegisterForm
template_name = "register.html"
success_url = reverse_lazy("core:Login")
def form_valid(self, form):
user = form.save()
if user:
login(self.request, user)
return super().form_valid(form)
注册.html
<h1>signup</h1>
{{form}}
当我运行代码时,我看到了这个输出
所以我没想到基于密码的身份验证。
我的问题是
- 这到底是什么?
- 它应该显示在这里吗?
- 我该如何隐藏它?
从 Django 5.1 版开始,默认情况下
UserCreationForm
有一个字段。这与 Django 为用户设置不可用密码usable_password
的功能有关。如果您使用某种外部身份验证(如单点登录或 LDAP),这很有用。由于您的表单似乎是面向用户的表单,并且向您的用户显示此字段没有多大意义(此特定表单默认情况下更适合在管理站点中使用),您应该通过将其设置为从表单中删除该字段
None
: