Django的默认用户模型用户名验证器允许testUser
和TestUser
用于2个不同的用户名。
我找到了一种在注册过程中使用户名不区分大小写的方法,但我想知道是否没有内置的方法来做到这一点。
这是我的做法:
if form.is_valid():
username = form.cleaned_data['username']
brk = True
try:
User.objects.get(username__iexact=username)
except:
brk = False
if brk:
messages.warning(request, 'Username already in use')
return redirect('signup')
form.save()
此方法看起来有点不专业。是否没有像Django中一样总是有一种内置方式?类似于用户名model
字段中的参数。
答案 0 :(得分:0)
我看到两种解决方法:
1-在数据库上创建约束,例如:Case insensitive unique model fields in Django?
2-覆盖用户名字段在表单上的验证。您可以将其用于处理用户名的任何或所有表单。
def clean_username(self):
username = lower(self.cleaned_data['username')
# You might even want to check with the username
#is already being used and raise a validation error here.
return username