簡體   English   中英

具有該用戶名的用戶在Django中已經存在

[英]user with that username already exists in Django

我在Django中編寫了兩個視圖作為類,以便為我的網站進行注冊和登錄。 但是問題是用戶對象創建成功。 但是當我稍后嘗試進行身份驗證時,收到警告消息,顯示具有該用戶名的用戶已經存在於Django中。下面給出了兩個視圖

class RegistrationView(View):
    form_class=RegistrationForm
    template_name='eapp/user_registration_form.html'


    def get(self,request):
        form=self.form_class(None)
        return render(request,self.template_name,{'form':form})

    def post(self,request):
        form=self.form_class(request.POST)

        if form.is_valid():

            user=form.save(commit=False)

            #cleaned (normalized) data
            username =form.cleaned_data['username']
            password =form.cleaned_data['password']
            email=form.cleaned_data['email']

            user.set_password(password)
            user.save()

        return render(request,self.template_name,{'form':form,})


class LoginView(View):
    form_class=LoginForm
    template_name='eapp/user_login_form.html'


    def get(self,request):
        form=self.form_class(None)
        return render(request,self.template_name,{'form':form})

    def post(self,request):
        form=self.form_class(request.POST)

        if form.is_valid():


            #cleaned (normalized) data
            username =form.cleaned_data['username']
            password =form.cleaned_data['password']



            #authenticatin

            user=authenticate(username=username,password=password)

            if user is not None:
                if user.is_active:
                        login(request,user)
                        return render(request,'eapp/index.html',{})

        return render(request,self.template_name,{'form':form,})

這是我來自django.contrib.auth.models import的forms.py

class RegistrationForm(forms.ModelForm):
    password=forms.CharField(widget=forms.PasswordInput)

    class Meta:
        model=User
        fields=['username','email','password']

class LoginForm(forms.ModelForm):
    password=forms.CharField(widget=forms.PasswordInput)

    class Meta:
        model=User
        fields=['username','password'

]

我該如何解決? 謝謝

將您的LoginForm更改為沒有模型的表單:

from django import forms

class LoginForm(forms.Form):

    username = forms.CharField(label = 'Nombre de usuario')
    password = forms.CharField(label = 'Contraseña', widget = forms.PasswordInput)

這樣,您的表單將驗證輸入的字段,並且不會從用戶模型中進行驗證

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM