django 中基于密码的身份验证是什么

问题描述 投票:0回答:1

我制作了一个继承自

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"]

views.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}}

当我运行代码时,我看到了这个输出

输出图像

所以我没想到基于密码的身份验证

我的问题

  1. 这到底是什么?
  2. 应该显示在这里吗?
  3. 如何隐藏它?
python-3.x django django-views django-forms django-templates
1个回答
0
投票

从 Django 版本 5.1 开始,

UserCreationForm
默认有一个
usable_password
字段。这与 Django 为用户设置不可用的密码的功能有关。如果您使用某种外部身份验证单点登录或 LDAP,这非常有用。

由于您的表单似乎是面向用户的,并且您似乎没有意识到向您的用户显示此字段没有多大意义,您应该简单地通过将其设置为

None 从表单中删除该字段

class RegisterForm(UserCreationForm):
    """Form to Create new User"""
    usable_password = None

    class Meta:
        model = get_user_model()
        fields = ["username", "password1", "password2"]
© www.soinside.com 2019 - 2024. All rights reserved.