在我的Django项目中,电子邮件和用户名必须是唯一的。
我想检查它们是否存在,但是Django 用户模型并没有提供像
这样的方法 遗憾的是, .filter()
,.count()
或.exists()
。 (我不知道为什么。)
def signup(request):
if request.method == 'POST':
username= request.POST['username']
email = request.POST['email']
password = request.POST['password']
user = User.objects.create_user(username=username, email=email, password=password)
user.save()
return HttpResponse(status=200)
else:
"""Return template with sign up page."""
return render(request, "account/account_signup.html")
我想以下面的方式检查,因为我需要单独的HTTP响应代码。
if User.objects.filter(username=username).count() > 0:
return HttpResponse(status=401)
if User.objects.filter(email=email).count() > 0:
return HttpResponse(status=402)
我知道,当我尝试创建现有用户名时,Django会向我提出错误:
return Database.Cursor.execute(self, query, params)
django.db.utils.IntegrityError: UNIQUE constraint failed: auth_user.username
但我想在views层中查看它。 提前谢谢!
答案 0 :(得分:0)
Django用户模型管理器与其他模型具有相同的方法。因此,您可以使用此方法检查现有用户名或电子邮件(类似于您的代码,但使用.exists()
,以避免计数操作)。
if User.objects.filter(email=email).exists():
return HttpResponse(status=401)