Has*_*war 6 python django django-forms
我在Django中创建了一个ModelForm来注册新用户.它有4个领域(username,email,password和confirm_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']
Run Code Online (Sandbox Code Playgroud)
我password已经包含以下验证器:
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimila??rityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValida??tor',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValid??ator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordVali??dator',
}
]
Run Code Online (Sandbox Code Playgroud)
它已经在settings.py中,但我的表单密码未经过验证
您需要阅读有关Password Validation的 Django 文档。
总之,你需要更新AUTH_PASSWORD_VALIDATORS你的设置settings.py。
Django 带有一些内置的密码验证器:
UserAttributeSimilarityValidator (检查密码和用户的一组属性之间的相似性)MinimumLengthValidator (检查密码是否满足最小长度)CommonPasswordValidator (检查密码是否出现在常用密码列表中)NumericPasswordValidator (检查密码是否不完全是数字)根据您在问题中陈述的示例验证,您需要使用MinimumLengthValidator和UserAttributeSimilarityValidator。
由于您使用的是表单,因此您需要通过在验证表单时调用来手动触发密码验证,如Django 文档中django.contrib.auth.password_validation.validate_password所述。
小智 5
在 forms.py 文件中,您可以使用它来验证设置中定义的所有验证的密码。如果您没有在设置文件中定义任何验证器,则调用您想要验证的特定验证器。
from django.contrib.auth.password_validation import validate_password`
from django.core import validators
from django import forms
class User_profileForm(forms.ModelForm):
password=forms.CharField(widget=forms.PasswordInput,validators=[validate_password])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2439 次 |
| 最近记录: |