我目前正在为应用实施用户注册。我想改变django.auth默认行为以使用电子邮件而不是用户名。我想我会使用自定义身份验证后端。我希望用户仍然能够提供用户名。
如何在不更改django.auth模型中的字段的情况下,在“john doe”等用户名中添加空格。
如何制作所需的电子邮件地址。目前,如果电子邮件为空,我的UserCreation表单中的clean_email方法会引发验证错误。必须有更好的方法。
感谢Brandon和Andrew Sledge,这是我的解决方案:
class RegisterForm(UserCreationForm):
username = forms.RegexField(label=("Username"), max_length=30, regex=r'^[ \t\r\n\f\w.@+*-]+$',
help_text = ("Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."),
error_messages = {'invalid': ("This value may contain only letters, numbers and @/./+/-/_ characters.")})
class Meta:
model = User
我从UserCreationForm复制了该字段。重要的是将\ t \ r \ n \ f添加到正则表达式。不会工作。
答案 0 :(得分:2)
您始终可以覆盖contrib.auth.forms中的UserCreationForm,以实现用户名的不同字段并提供您自己的验证。只需继承表单并添加您自己的用户名字段,或在类的__init__
中覆盖它。
答案 1 :(得分:1)
也许您想使用validate_slug:
RegexValidator实例,确保值仅包含字母,数字,下划线或连字符
答案 2 :(得分:0)
对于用户名: 重写UserCreationForm(django.contrib.auth.forms)以修改字段的regex参数以允许空格。不需要对模型进行任何更改。