既然默认情况下用户名区分大小写,如何防止重复用户名?

2024-09-30 14:30:39 发布

您现在位置:Python中文网/ 问答频道 /正文

默认情况下,Django用户名区分大小写。显然,这是won't be fixed的东西。在

这是一个很好的特性,特别是在不允许使用其他字符的情况下。例如,我自己的用户名可能看起来更像StringsOnFire。但是,在默认情况下,从用户名中给用户一个唯一的URL是不可能的。在

我想:

  • 允许在用户名中混合使用大写和小写字母
  • 只有在验证新用户名是否唯一时才忽略大小写
  • 保持contrib.auth用户模型不变

可能的解决方案是什么?哪种方法最好?在


Tags: django用户url情况特性becontrib字符
2条回答

我想我有个解决办法:

def clean_username(self):
    kwargs = {
        '{0}__{1}'.format(UsernameField(), 'iexact'): self.cleaned_data['username'],
    }
    if User.objects.filter(**kwargs):
        raise ValidationError(_('A user with that username already exists.'), code='invalid')
    return self.cleaned_data['username']

UsernameField()来自django registration redux。

如果这种方法有什么问题,请说!在

您可以使用^{},在create_user()方法中,执行不区分大小写的检查,看看用户名是否已经与^{}一起存在

相关问题 更多 >