我能夠成功註冊。當用戶註冊時,他們已成功登錄。但在此之後,單獨登錄不起作用。我已經從代碼中複製並粘貼了代碼進行註冊,我不知道這裏出了什麼問題。Django表單無效
這裏是forms.py:
class UserForm(forms.ModelForm):
password=forms.CharField(widget=forms.PasswordInput)
class Meta:
model=User
fields=["username","password","email"]
class Login(forms.ModelForm):
password=forms.CharField(widget=forms.PasswordInput)
class Meta:
model=User
fields=["username","password"]
這裏是views.py:
class singup(View):
form_class=UserForm
template_name='users/index.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)
username=form.cleaned_data['username']
password=form.cleaned_data['password']
user.set_password(password)
user.save()
user=authenticate(username=username,password=password)
if user is not None:
if user.is_active:
login(request,user)
return render(request,'home/index.html',{'username':username})
return render(request, self.template_name, {'form': form})
class loginView(View):
form_class=Login
template_name='users/login.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():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = authenticate(username=username, password=password)
login(request,user)
return render(request, 'home/index.html')
return render(request, self.template_name, {'form': form})
HTML代碼:
"<h1> Sign In</h1>
<div class="container">
{{ form.errors }}
{{ form.non_field_errors }}
<form action="" method="post">
{% csrf_token %}
username <input type="text" name="username" id="username">
<br>
<br>
password <input type="password" name="password" id="password">
<br>
<br>
<input type="submit" value="login">
</form>
</div>"
我覺得這裏的問題是,它不會在loginView中輸入「form.is_valid()」部分!
顯示您的形式,也張貼堆棧跟蹤以及 – zaidfazil