【问题标题】:user with that username already exists in Django具有该用户名的用户已存在于 Django 中
【发布时间】:2017-07-06 01:47:02
【问题描述】:

我在 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.models 导入用户 从 django 导入表单

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'

]

我该如何解决这个问题?谢谢你

【问题讨论】:

  • 你可以分享你的 forms.py 吗?
  • @BrianOcampo 一秒兄弟
  • @BrianOcampo 更新
  • @Darshan 在哪里?
  • 忘记我的最后评论,你能检查一下登录按钮是否在点击登录按钮时被调用????

标签: python django


【解决方案1】:

将您的登录表单更改为没有模型的表单:

from django import forms

class LoginForm(forms.Form):

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

这样您的表单将验证输入的字段,并且不会从用户模型中获取验证

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 2017-08-05
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    相关资源
    最近更新 更多