用户注册不会保存

时间:2018-11-29 03:46:39

标签: django django-views

我想将用户注册保存在Django中,但它始终返回“ Existing”。我该如何解决?我的代码如下

class RegisterView(View):

template = "#"

    context_data = ModelUser.objects.all()

    def get(self, *args, **kwargs):
        return render(self.request, self.template, {'context_data' : self.context_data})

    def post(self, *args, **kwargs):
        user = ModelUser()
        if self.request.method == 'POST':
            if self.request.POST.get('fname') and self.request.POST.get('lname') and self.request.POST.get('email') and self.request.POST.get('username') and self.request.POST.get('password'):
                user.fname = self.request.POST.get('fname')
                user.lname = self.request.POST.get('lname')
                user.email = self.request.POST.get('email')
                user.username = self.request.POST.get('username')
                user.password = self.request.POST.get('password')

                for account in self.context_data:
                    if self.request.POST.get('email') == user.email or self.request.POST.get('username') == user.username:
                        return HttpResponse('Existing')
                if user.password != self.request.POST.get('repassword'):
                    return HttpResponse('password not match!')
                else:
                    user.save()
                    return HttpResponse('Successfully created!')
        else:
            return HttpResponse('Invalid')

1 个答案:

答案 0 :(得分:0)

像这样更改post方法:

def post(self, *args, **kwargs):
    try:      
        fname = self.request.POST['fname'
        lname = self.request.POST['lname']
        email = self.request.POST['email']
        username = self.request.POST['username']
        password = self.request.POST['password']
    except KeyError as e:
        print('Key Missing for {}'.format(str(e)))
        return HttpResponse('Invalid Request')

    if self.context_data.filter(username=usname).exists():  
            return HttpResponse('Existing')
    if password != self.request.POST.get('repassword'):
        return HttpResponse('password not match!')
    else:
        UserModel.objects.create_user(fname=fname, lname=lname, username=username, password=password)
        # Or 
        # u = UserModel(fname=fname, lname=lname, username=username)
        # u.set_password(password)
        # u.save()
        return HttpResponse('Successfully created!')