在Django中使用户名不区分大小写的更好方法是什么? [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

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字段中的参数。

python django
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.