使用户名在Django中不区分大小写的更好方法?

时间:2019-03-23 19:41:26

标签: python django

Django的默认用户模型用户名验证器允许testUserTestUser用于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字段中的参数。

1 个答案:

答案 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