我想将用户注册保存在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')
答案 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!')