【发布时间】:2018-05-30 00:50:31
【问题描述】:
我在 Django 中制作了一个 ModelForm 用于注册新用户。它有 4 个字段(username、email、password 和 confirm_password)。我想为password 字段添加一些验证。例如,如果密码少于 8 个字符或密码与用户名相似,则引发错误消息。我该怎么做?
这是我的forms.py 文件:
from django.contrib.auth.models import User
from django import forms
class user_form(forms.ModelForm):
password = forms.CharField(widget = forms.PasswordInput)
confirm_password = forms.CharField(widget = forms.PasswordInput)
class Meta:
model = User
fields = ['username','email', 'password','confirm_password']
我的settings.py 已经包含以下验证器:
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
}
]
它已经在settings.py 中,但我的表单密码没有得到验证。
【问题讨论】:
-
您是否尝试过覆盖密码清除方法?
-
我该怎么做?
-
@Hashir Sarwar 我更新了我的答案以解释如何在验证表单时触发密码验证。
标签: python django django-forms