如何在django中创建密码输入字段

Dar*_*mid 56 django django-templates django-models django-forms django-views

嗨我正在使用django模型类与一些字段和密码字段.我想显示密码输入,而不是显示普通的纯文本.我创建了一个这样的模型类:

class UserForm(ModelForm):
    class Meta:
        password = forms.CharField(widget=forms.PasswordInput)
        model = User
        widgets = {
            'password': forms.PasswordInput(),
        }
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:NameError:未定义名称'forms'.

我使用的是django 1.4.0版.我按照这个链接:Django密码问题

仍然得到同样的错误.我该怎么办.我哪里出错了.请帮忙

Bur*_*lid 64

小部件需要是函数调用,而不是属性.你缺少括号.

class UserForm(ModelForm):
    password = forms.CharField(widget=forms.PasswordInput())
    class Meta:
        model = User
Run Code Online (Sandbox Code Playgroud)

  • 不是真的,Django 专门用 `if isinstance(widget, type): widget = widget()` 来处理这个问题 (2认同)
  • django表单中的字段与HTML表单中的字段不同.HTML表单中的字段与django表单中的_widget_相同. (2认同)

DrT*_*rsa 55

您需要在导入中包含以下内容;

from django import forms
Run Code Online (Sandbox Code Playgroud)

  • @DarHamid我不是技术支持.我已经回答了你的问题,如果你有其他问题 - 请问另一个问题.但是你可以自己调试一段时间吗?可能你错过了某个地方的一对括号?可能是第一个和第二个密码字段不应该具有相同的名称?尝试是最好的学习方式. (19认同)

小智 16

为什么不创建您自己的密码字段,您可以在所有模型中使用.

from django import forms 

class PasswordField(forms.CharField):
    widget = forms.PasswordInput

class PasswordModelField(models.CharField):

    def formfield(self, **kwargs):
        defaults = {'form_class': PasswordField}
        defaults.update(kwargs)
        return super(PasswordModelField, self).formfield(**defaults)
Run Code Online (Sandbox Code Playgroud)

所以现在在你的模型中使用

password = PasswordModelField()
Run Code Online (Sandbox Code Playgroud)


小智 14

@DrTyrsa是对的.别忘了你的括号.

from django.forms import CharField, Form, PasswordInput

class UserForm(Form):
    password = CharField(widget=PasswordInput())
Run Code Online (Sandbox Code Playgroud)


Ega*_*cia 5

我做了如下操作,没有任何额外的导入

from django import forms
class Loginform(forms.Form):
    attrs = {
        "type": "password"
    }
    password = forms.CharField(widget=forms.TextInput(attrs=attrs))
Run Code Online (Sandbox Code Playgroud)

这个想法来自源代码: https://docs.djangoproject.com/en/2.0/_modules/django/forms/fields/#CharField