【问题标题】:UsercreationForm to check if email exists in database djangoUsercreationForm 检查数据库 django 中是否存在电子邮件
【发布时间】:2023-02-03 22:50:41
【问题描述】:

我创建了一个 usercreationform 并尝试检查用户名和电子邮件是否已存在于数据库中。这里它只检查电子邮件是否存在,但不能检查用户名。

视图.py

from django.shortcuts import render,redirect
from . forms import  signupform
from django.contrib import messages
from django.contrib.auth  import login,authenticate,logout
from django.contrib.auth.models  import User


def signup_data(request):
    form = signupform(request.POST)
    if form.is_valid():
                    username = form.cleaned_data['username']
                    email = form.cleaned_data['email']

                    if User.objects.filter(username=username).exists():
                            messages.error(request,'Username is already taken')
                            return redirect('signup')

                        
                    elif User.objects.filter(email=email).exists():
                            messages.error(request,'Email is already taken')
                            return redirect('signup')
                
                    else:
                            form.save()
                            messages.success(request,'Account Is Created')
                            return redirect('signup')
    

    return render(request,'login_module/signup.html',{'form':form, 'message': messages})

表格.py

from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User  class signupform(UserCreationForm):

    username= forms.CharField(max_length=10,widget=forms.TextInput(attrs={'class':'form-control'}))
    first_name = forms.CharField(max_length=20, widget=forms.TextInput(attrs={'class': 'form-control'}))
    last_name = forms.CharField(max_length=20,widget=forms.TextInput(attrs={'class': 'form-control'}))
    email =  forms.EmailField(max_length=20,widget=forms.EmailInput(attrs={'class': 'form-control'}))
    password1 = forms.CharField(label="Password",widget=forms.PasswordInput(attrs={'class':'form-control'}))
    password2 = forms.CharField(label="Confirm Password",widget=forms.PasswordInput(attrs={'class':'form-control'}))

    class Meta:
        model = User
        fields = ['username','first_name','last_name','email','password1','password2']

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    您可以结合这两个查询来运行 OR query using Q

    from django.db.models import Q
    
    if User.objects.filter(Q(username=username)|Q(email=email)).exists():
       # do stuff
    

    【讨论】:

      猜你喜欢
      • 2012-03-13
      • 2014-03-15
      • 2014-05-10
      • 2021-04-24
      • 2019-06-29
      • 2019-09-17
      • 2019-07-13
      • 2017-09-28
      相关资源
      最近更新 更多