Django 脆皮形式将密码显示为明文

Pro*_*eus 2 python django django-crispy-forms

Crispy 表单目前将我的密码字段显示为明文。我尝试了以下操作,但仍然无法使用 type=password。

Fieldset(
            'Enter a password.',
            PrependedText('password', '<i class="fa fa-key"></i>',
                          placeholder='Password',
                          autocomplete='off',
                          widget=forms.PasswordInput,
                          ),
        ),
Run Code Online (Sandbox Code Playgroud)

我也累type="password"了没有效果。

我没有错误。

Ion*_*iuc 5

我 99.9% 肯定您没有将小部件添加到表单字段声明中。你应该有这样的东西才能显示密码字段:

class MyForm(forms.Form):
    ...
    password = forms.CharField(widget=forms.PasswordInput)
    ...
Run Code Online (Sandbox Code Playgroud)

布局应该像这样简单:

Layout(
    PrependedText('password', '@', placeholder="password", autocomplete='off')
)
Run Code Online (Sandbox Code Playgroud)

widget=关键字参数是在Django的定义forms.CharField构造函数,而不是在Django的cryspy表单bootstrap.PrependedText的构造。

您可以在此处找到有关 Django 表单字段的更多信息。

更新

如果您有一个模型表单,它是从您的模型构建的,可以是自动(例如使用管理视图),也可以是通过使用modelform_factory或自己定义 ModelForm。这是第 3 种方法的示例。

class MyModelForm(forms.ModelForm):
    class Meta:
        fields = (... fields you want to include in the form ...)

    password = forms.CharField(widget=forms.PasswordInput, ...)
Run Code Online (Sandbox Code Playgroud)

请注意,通过提供模型表单字段覆盖,您还必须提供标签、help_text(等)等属性,因为它们不会从模型字段自动复制。