我在我的Django应用程序中使用电子邮件地址作为用户名
USERNAME_FIELD = 'email'
但电子邮件字段区分大小写:
test@example.com
和TEST@EXAMPLE.COM
保存为两个不同的用户。这是正常的,还是应该以某种方式验证?
答案 0 :(得分:2)
在将电子邮件用于保存,比较等操作之前小写电子邮件。
def save(self, *args, **kwargs):
self.email = self.email.lower()
return super(User, self).save(*args, **kwargs)
答案 1 :(得分:2)
您应该将这两封电子邮件验证为同一用户,并尝试始终在lowercase
保存用户名。
如果您将两封电子邮件保留为不同的用户,则有一些用例需要手动处理,这会增加开销。
- 假设
test@example.com
错误地尝试使用Caps
登录,在这种情况下,他永远无法访问其帐户。- 您必须始终牢记在开发期间不要在
username
字段iexact
,icontains
上使用不区分大小写的查找。