Din*_* Xu 3 python django django-registration
我django-registration-redux在我的项目中用于用户注册.它使用默认User模型username作为唯一标识符.
现在我们想要丢弃username并email用作唯一标识符.
而且我们也希望使用email而不是username登录.
怎么做到这一点?
是否可以在不更改AUTH_USER_MODEL设置的情况下执行此操作?
因为它来自官方文件
如果要设置
AUTH_USER_MODEL,则应在创建任何迁移或manage.py首次运行迁移之前进行设置.
您可以覆盖此类注册表单
from registration.forms import RegistrationForm
class MyRegForm(RegistrationForm):
username = forms.CharField(max_length=254, required=False, widget=forms.HiddenInput())
def clean_email(self):
email = self.cleaned_data['email']
self.cleaned_data['username'] = email
return email
Run Code Online (Sandbox Code Playgroud)
然后将其添加到设置文件(有关详细信息,请阅读此链接)
REGISTRATION_FORM = 'app.forms.MyRegForm'
Run Code Online (Sandbox Code Playgroud)
这会将电子邮件设置为用户名字段,然后一切都将工作,因为电子邮件现在是用户名.
唯一的问题是用户名字段在DB中的最大长度为30.因此,超过30个字符的电子邮件将引发数据库异常.为了解决覆盖用户模型(读这个细节).
| 归档时间: |
|
| 查看次数: |
2619 次 |
| 最近记录: |