私は正常にサインアップすることができます。ユーザーがサインアップされると、ユーザーは正常にサインインされます。しかしその後、別のログインは機能しません。私は結構コードをコピーして貼り付けているので、ここで何が間違っているのか分かりません。ここ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