我一整天都試圖弄清楚這一點,但我無法真正看到問題來自哪裏。WEIRD Django AuthenticationForm行爲
我有一個DjangoAuthenticationForm
這似乎是以某種方式提交數據,但沒有得到驗證。
forms.py:
class LoginForm(AuthenticationForm):
username = forms.CharField(widget=forms.TextInput(attrs={'name': 'username'}))
password = forms.CharField(widget=forms.PasswordInput(attrs={'name': 'password'}))
views.py:
def index(request):
template = 'myapp/login.html'
if request.method == "POST":
print request.POST #prints QueryDict with its data
reg = LoginForm(request.POST or None)
if reg.is_valid():
return HttpResponse('Success: Form is valid!')
else:
return HttpResponse('Error: Form not valid')
loginform = LoginForm()
context = {'loginform':loginform}
return render(request, template, context)
HTML:
<form method="post" action=".">
{% csrf_token %}
<h2>Sign in</h2>
<p class="text-danger">{{loginform.errors}}</p>
{{ loginform.as_p }}
<button name = "signin" type="submit" value="0">Sign in</button>
</form>
的print request.POST
在我views.py打印的QueryDict:{u'username ':[u'yax'],u'csrfmiddlewaretoken ':[u'r8y1PaVNjxNWypdzP MaFe1ZL7IkE1O7Hw0yRPQTSipW36z1g7X3vPS5qMMX56byj'],u'password ':[u'sdfdsfsddfs'] , u'signin':[u'0']}但reg.is_valid()
總是返回false
。
編輯:
我也曾嘗試打印出reg.errors
但它不會打印出任何東西。
檢查發生什麼的最好方法是在失敗後打印reg.errors – Aquiles
@Aquiles它打印出一個空字符串。 – Yax