![](/img/trans.png)
[英]Django Login Form Returning false on is_valid() if username already exists
[英]login form keeps telling my username already exists django
所以我正在嘗試使用 forms.py 文件為 django 網站制作一個登錄表單,以在我的 html 中生成一個表單。 我已經使用相同的方法制作了一個注冊表單並且效果很好,但由於某種原因,我的登錄表單一直像注冊表一樣工作,並說我的用戶名已經存在。 我認為這只是一個小錯誤,但我無法弄清楚它到底是什么。
from django.contrib.auth.models import User
from django import forms
class LoginForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = User
fields = ['username', 'password']
class LoginFormView(View):
form_class = LoginForm
template_name = 'intranet/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():
username = request.POST.get['username']
password = request.POST.get['password']
user = authenticate(username=username,password=password)
if user is not None:
if user.is_active:
login(request,user)
return redirect('werknemers_list')
return render(request, self.template_name, {'form': form})
<h1>Log in</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="log in" />
</form>
from django.conf.urls import url
from intranet import views
urlpatterns = [
url(r'^$', views.LoginFormView.as_view(), name='login'),
url(r'^registreer$', views.UserFormView.as_view(), name='registreer')]
您不應該為此使用 ModelForm。 這將始終調用模型驗證,在這種情況下會檢查用戶名的唯一性。
請改用標准的 Form 類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.