有没有一种方法可以完全删除或禁用Django中的用户名?
我只想使用电子邮件和密码。
我只想使用电子邮件和密码。
您无法禁用它,但是当用户使用电子邮件地址注册时,您可以生成一个随机或基于电子邮件地址的占位符用户名。在您的注册表单的clean()方法中添加类似以下代码将从电子邮件地址创建唯一用户名(因为您不能使用非字母数字字符作为用户名):
highest_user_id = User.objects.all().order_by('-id')[0].id #or something more efficient
leading_part_of_email = user_email.split('@',1)[0]
leading_part_of_email = re.sub(r'[^a-zA-Z0-9+]', '', leading_part_of_email) #remove non-alphanumerics
truncated_part_of_email = leading_part_of_email[:3] + leading_part_of_email[-3:] #first three and last three - will turn "ab@foo.com" into "abab" or b@ into "bb", which is ok
derived_username = '%s%s' % (truncated_part_of_email, highest_user_id+1)
自Django 1.2版本以来,用户名可以包含@、+、.和-字符。
只需使用电子邮件地址作为用户名即可。
django.contrib.auth
,浏览它,将模型中的username
删除,并用email
替换每个引用username
的地方。这是一种蛮力的方法,因为身份验证并不真正“内置”于Django中。 - Mike D.