在 Django 中使用户名不区分大小写的更好方法? [复制]
Posted
技术标签:
【中文标题】在 Django 中使用户名不区分大小写的更好方法? [复制]【英文标题】:Better way to make usernames NOT case sensitive in Django? [duplicate] 【发布时间】:2019-08-14 12:07:33 【问题描述】: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
字段中的参数。
【问题讨论】:
可以先使用字符串方法string.lower()将其转为小写字符串 但我希望用户名与数据库中的输入字体大小写一起保存 ***.com/questions/13190758/… 【参考方案1】:我看到了两种方法:
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
【讨论】:
以上是关于在 Django 中使用户名不区分大小写的更好方法? [复制]的主要内容,如果未能解决你的问题,请参考以下文章