Django注册-检查用户是否已经存在



当前web应用程序应该能够注册新用户。然而,如果用户已经存在,则它应该将用户重定向到具有消息"的登录页面;用户已存在&">
Django视图:

from django.contrib.auth.models import User
def registerPage(request):
form = CreateUserForm()
if request.method == 'POST':
form = CreateUserForm(request.POST)
if form.is_valid():
email = form.cleaned_data['email']
username = form.cleaned_data['username']
if User.objects.filter(username=username).exists():
messages.info(
request, 'User already exists! Try logging in.')
return redirect('login')
else:
user = form.save(commit=False)
raw_password = User.objects.make_random_password()
user.set_password(raw_password)
user.save()
...

我根据用户的用户名对其进行筛选,并使用exists()方法检查其是否已经存在。但这似乎不起作用。我有什么东西不见了吗?

更新
不起作用的是我认为的检查不起作用。因为如果它成功地检查到用户存在,那么它应该redirect('login')而不是运行else语句。


解决方案
事实证明,由于我使用的是Django的内置CreateUserForm,并且使用form.is_valid()进行验证,因此Django已经内置了它来检查用户是否已经存在。因此,我所做的只是在if form.is_valid()之后添加一个else语句,并将我的用户重定向到登录页面。

username已经在auth/models.py中标记为unique=True,因此您可以简单地使用try/catch。

最新更新