您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

检查Django中是否存在用户名

5b51 2022/1/14 8:22:44 python 字数 3257 阅读 572 来源 www.jb51.cc/python

我正在开发一个Django项目,用户可以在一个窗体中改变用户名和姓名.在forms.py中,我试图找出用户是否存在.如果是这样,它应该显示一个错误.问题是,如果用户想要更改他的姓氏,并将其用户名留在输入中,则会引发验证错误.显然,该用户名已经存在.有没有办法检查它是否等于当前记录的用户的用户名,并避免显示错误? class ChangeNameForm(forms.ModelForm):

概述

class ChangeNameForm(forms.ModelForm):
    username = forms.CharField(max_length=30)
    first_name = forms.CharField(max_length=255)
    last_name = forms.CharField(max_length=255)

    def clean_username(self):
        username = self.cleaned_data['username']

        try:
            user = User.objects.get(username=username)
        except user.DoesNotExist:
            return username
        raise forms.ValidationError(u'Username "%s" is already in use.' % username)

谢谢.

form = ChangeNameForm(request.POST,instance=request.user)

如果是这样,您可以从表单方法访问记录的用户,您的验证方法可以是这样的:

def clean_username(self):
    username = self.cleaned_data['username']
    try:
        user = User.objects.exclude(pk=self.instance.pk).get(username=username)
    except User.DoesNotExist:
        return username
    raise forms.ValidationError(u'Username "%s" is already in use.' % username)

考虑使用.exists方法,因为它会比您尝试使用.get方法检索所有用户信息更快地查询数据库.代码也有点清洁:

def clean_username(self):
    username = self.cleaned_data['username']
    if User.objects.exclude(pk=self.instance.pk).filter(username=username).exists():
        raise forms.ValidationError(u'Username "%s" is already in use.' % username)
    return username

或者,您也可以在提高ValidationError时关注these guidelines.

我现在无法测试这个代码,所以如果有什么问题,我们道歉.

总结

以上是编程之家为你收集整理的检查Django中是否存在用户名全部内容,希望文章能够帮你解决检查Django中是否存在用户名所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶