删除或禁用Django中用户的用户名

时间:2010-04-27 09:20:02

标签: django django-models django-forms

有没有办法在Django中完全删除或禁用用户名?

我只想使用电子邮件和密码。

2 个答案:

答案 0 :(得分:2)

您无法禁用它,但是当用户使用电子邮件地址注册时,您可以生成随机或电子邮件地址派生的占位符用户名。在您的注册表单的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)

答案 1 :(得分:0)

自Django 1.2起,用户名可能包含@,+ ,.和 - 字符。

只需使用电子邮件地址作为用户名。