提交注册表单后Django如何获取密码?
Django how to get password after registration form is submitted?
我正在尝试编辑 django-registration
的 RegistrationFormUniqueEmail
表单,该表单目前如下所示:
class RegistrationFormUniqueEmail(RegistrationForm):
"""
Subclass of ``RegistrationForm`` which enforces uniqueness of
email addresses.
"""
def clean_email(self):
"""
Validate that the supplied email address is unique for the
site.
"""
if User.objects.filter(email__iexact=self.cleaned_data['email']):
raise forms.ValidationError(validators.DUPLICATE_EMAIL)
return self.cleaned_data['email']
我想实现一个表单来检查密码是否包含数字和特殊字符,但我无法获取密码?我不确定这是否可能,但这是我尝试获取密码的方法:
self.cleaned_data['id_password2']
self.cleaned_data['password2']
self.cleaned_data['password']
self.cleaned_data.get('id_password2')
self.cleaned_data.get('password2')
self.cleaned_data.get('password')
所有这些 return 一个 NoneType 对象。
我也试图定义一个 clean_password2
函数,但没有帮助。这可行吗?怎么会这样?
感谢您的帮助,
已清理的数据不是您创建表单时的属性,而是在您对表单调用 is_valid() 时添加的。
is_valid() 将检查数据是否符合您在创建表单时对其施加的约束(在这种情况下,默认情况下匹配密码和唯一电子邮件地址用于 RegistrationFormUniqueEmail)。除了对密码强度执行额外检查之外,覆盖 is_valid() 或创建另一个调用 is_valid() 的函数可能是有意义的,而不是在标准过程之外执行额外验证
def custom_is_valid(self):
valid = self.is_valid()
if password.is.not.secure():
self.add_error('password', ValidationError(('Insecure Password'), code='invalid'))
valid = False
return valid
上面的片段可能可以解决问题。添加错误的字符串 'password' 将其添加到您指定的表单字段上,您可能想要使用 password1 或 password2,因为我认为这是您正在使用的构建表单的字段名称。此外,您不会使用 cleaned_data 来检查密码有效性。您只需使用数据属性 form.data['password']
我正在尝试编辑 django-registration
的 RegistrationFormUniqueEmail
表单,该表单目前如下所示:
class RegistrationFormUniqueEmail(RegistrationForm):
"""
Subclass of ``RegistrationForm`` which enforces uniqueness of
email addresses.
"""
def clean_email(self):
"""
Validate that the supplied email address is unique for the
site.
"""
if User.objects.filter(email__iexact=self.cleaned_data['email']):
raise forms.ValidationError(validators.DUPLICATE_EMAIL)
return self.cleaned_data['email']
我想实现一个表单来检查密码是否包含数字和特殊字符,但我无法获取密码?我不确定这是否可能,但这是我尝试获取密码的方法:
self.cleaned_data['id_password2']
self.cleaned_data['password2']
self.cleaned_data['password']
self.cleaned_data.get('id_password2')
self.cleaned_data.get('password2')
self.cleaned_data.get('password')
所有这些 return 一个 NoneType 对象。
我也试图定义一个 clean_password2
函数,但没有帮助。这可行吗?怎么会这样?
感谢您的帮助,
已清理的数据不是您创建表单时的属性,而是在您对表单调用 is_valid() 时添加的。
is_valid() 将检查数据是否符合您在创建表单时对其施加的约束(在这种情况下,默认情况下匹配密码和唯一电子邮件地址用于 RegistrationFormUniqueEmail)。除了对密码强度执行额外检查之外,覆盖 is_valid() 或创建另一个调用 is_valid() 的函数可能是有意义的,而不是在标准过程之外执行额外验证
def custom_is_valid(self):
valid = self.is_valid()
if password.is.not.secure():
self.add_error('password', ValidationError(('Insecure Password'), code='invalid'))
valid = False
return valid
上面的片段可能可以解决问题。添加错误的字符串 'password' 将其添加到您指定的表单字段上,您可能想要使用 password1 或 password2,因为我认为这是您正在使用的构建表单的字段名称。此外,您不会使用 cleaned_data 来检查密码有效性。您只需使用数据属性 form.data['password']