2017-02-16 2 views
0

Я написал два вида в качестве класса в 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,}) 

вот мой forms.py» из django.contrib.auth. модели импорта Пользователь от Джанго импортных форм

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' 

]

Как я могу решить эту проблему? ThankYou

+0

Вы можете сообщайте формы .py? –

+0

@BrianOcampo одна секунда bro – Ananthu

+0

@BrianOcampo обновлен – Ananthu

ответ

3

Изменения 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) 

Таким образом, ваша форма будет проверять, что поля заполнены и не будет принимать валидации от модели User

Смежные вопросы