【问题标题】:how i can change label password in django froms?我如何更改 django 表单中的标签密码?
【发布时间】:2019-09-25 00:53:18
【问题描述】:

我需要在 django 中创建的表单中更改标签(密码 = forms.PasswordInput())。

我试过这个:

 from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm



class UserRegisterForm(UserCreationForm):
    name = forms.CharField(label='نام و نام خوانوادگی', max_length=100)
    email = forms.EmailField(label='ایمیل')
    password1 = forms.PasswordInput(label='پسورد')
    number = forms.IntegerField(label='شماره همراه')



    class Meta:
        model = User
        fields = ['name' , 'email' ,  'number','password1']

但它不起作用并且有错误: TypeError: init() 得到了一个意外的关键字参数“标签”

【问题讨论】:

  • PasswordInput 是一个小部件,而不是一个表单域。所以你定义密码字段的方式是错误的。向我们展示您的整个表格。或者,如果您使用的是模型表单,请阅读 this,您将在其中了解如何覆盖模型表单上的 labels
  • @dirkgroten 我不使用模型。我使用 forms.py 并从 UserCreation 类继承类
  • "使用 forms.py" 是什么意思?我说的是“模型形式”而不是“模型”。给我们看forms.py
  • 请编辑您的问题,不要在 cmets 中发布代码。无法阅读。
  • 使用问题下方的“编辑”按钮将代码添加到问题中。

标签: python django


【解决方案1】:

正如我在 cmets 中提到的,您继承自 UserCreationForm,这是一个 ModelForm。如果您查看UserCreationForm 的源代码,您会发现password1 被定义为forms.CharField,并且它不是来自模型。

像这样替换您的密码字段:

password1 = forms.CharField(
    label="پسورد",
    strip=False,
    widget=forms.PasswordInput,
    help_text=password_validation.password_validators_help_text_html(),
)

另外,从fields 列表中删除“password1”。它不是来自用户模型的字段。

【讨论】:

  • 我得到:NameError: name 'password_validation' is not defined
  • 你需要导入它。 from django.contrib.auth import password_validation
  • 它的工作,但我有问题,我怎样才能隐藏密码字段下的细节?比如密码必须是8个字符?
  • 那是 help_text。然后删除它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-01
  • 1970-01-01
  • 2023-03-23
  • 2022-12-17
  • 1970-01-01
  • 1970-01-01
  • 2021-07-07
相关资源
最近更新 更多