私は、一日中、これを理解しようとしましたが、どこから問題が発生しているのかは分かりません。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>
{u'username ':[u'yax']、u'csrfmiddlewaretoken ':[u'r8y1PaVNjxNWypdzP MaFe1ZL7IkE1O7Hw0yRPQTSipW36z1g7X3vPS5qMMX56byj']、u'password ':[u'sdfdsfsddfs'] 、私のviews.pyプリントのQueryDict 210 u'signin ':[u'0']}しかし、reg.is_valid()
はfalse
を返し続けます。
EDIT:
私はまたreg.errors
をプリントアウトしようとしたが、それは何も印刷されません。以下の変更を行う
何が起きているかを確認する最良の方法は、失敗した後にreg.errorsを印刷することです。 – Aquiles
@Aquilesは空文字列を出力します。 – Yax