で動作します私はDjangoのために新たなんだと私はモデルとPOSTフォームデータを処理する方法についてのジャンゴからチュートリアルを以下ましたジャンゴrequest.POSTデータが空であるが、他の同様の形式
https://docs.djangoproject.com/en/dev/topics/forms/#using-a-form-in-a-view
I簡単なログインのためにそれを行うことができました、そして、私はコンソールの変数を印刷することができます。 form.is_valid()関数はtrueで、ログインビューに期待どおりに機能します。
私は登録ページと同じことをしましたが、is_valid()関数からFALSEが返されています。私はcsrfトークンを手直ししていましたが、それは問題を引き起こしているようではなかったので、なぜ私はそれらを必要としませんでした。
私はリクエストを得ることができるので、愚かな問題になるだろうと思う。ログインケースではポストが、登録ではない。どんな助けもありがとうございます。ここで
はここに私のhtmlフォーム<div id="login" class="animate form">
<form action="/signin" autocomplete="on" method ="POST">
<!--{% csrf_token} -->
<h1>Log in</h1>
<p>
<label for="username" class="uname" data-icon="u" > Your email or username </label>
<input id="username" name="username" required="required" type="text" placeholder="myusername or [email protected]"/>
</p>
<p>
<label for="password" class="youpasswd" data-icon="p"> Your password </label>
<input id="password" name="password" required="required" type="password" placeholder="eg. X8df!90EO" />
</p>
<p class="keeplogin">
<input type="checkbox" name="loginkeeping" id="loginkeeping" value="loginkeeping" />
<label for="loginkeeping">Keep me logged in</label>
</p>
<p class="login button">
<input type="submit" value="Login" />
<div id="register" class="animate form">
<form action="/register" autocomplete="on" method ="POST">
<!--{% csrf_token %} -->
<h1> Sign up </h1>
<p>
<label for="usernamesignup" class="uname" data-icon="u">Your username</label>
<input id="usernamesignup" name="usernamesignup" required="required" type="text" placeholder="mysuperusername690" />
</p>
<p>
<label for="emailsignup" class="youmail" data-icon="e" > Your email</label>
<input id="emailsignup" name="emailsignup" required="required" type="email" placeholder="[email protected]"/>
</p>
<p>
<label for="passwordsignup" class="youpasswd" data-icon="p">Your password </label>
<input id="passwordsignup" name="passwordsignup" required="required" type="password" placeholder="eg. X8df!90EO"/>
</p>
<p>
<label for="passwordsignup_confirm" class="youpasswd" data-icon="p">Please confirm your password </label>
<input id="passwordsignup_confirm" name="passwordsignup_confirm" required="required" type="password" placeholder="eg. X8df!90EO"/>
</p>
<p class="signin button">
<input type="submit" value="Sign up"/>
あるforms.pyここ
from django import forms
from django.forms import CharField
class NameForm(forms.Form):
username = forms.CharField(label = 'username', max_length=25)
password = forms.CharField(label = 'password', max_length=25)
class RegForm(forms.Form):
regName = forms.CharField(label = 'usernamesignup', max_length = 25)
regEmail = forms.CharField(label = 'emailsignup', max_length = 50)
regPassword = forms.CharField(label = 'passwordsignup', max_length = 30)
regPasswordConfirm = forms.CharField(label = 'passwordsignup_confirm', max_length = 30)
にログイン/登録を処理していますviews.pyされている
@csrf_exempt
def signin(request):
#if this is a POST request we need to process the login credentials
if request.method == 'POST':
#create the form instance and populate with username/password
form = NameForm(request.POST)
#verify
print form
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
print username
print password
return render(request, 'webServer/home.html')
else:
return render(request, 'webServer/login.html')
else:
return render(request, 'webServer/login.html')
@csrf_exempt
def register(request):
if request.method == 'POST':
#create form instance and grab register credentials
form2 = RegForm(request.POST)
#verify not a duplicate entry (email, username)
print form2
if form2.is_valid():
username = form2.cleaned_data['regPassword']
return render(request, 'webServer/home.html')
else:
print 'had error'
return render_to_response('webServer/errors.html', {'form': form2})
else:
return render(request, 'webServer/login.html')
(これは草稿です)
フォームに問題がありますか?なぜPOSTは空だと思いますか? is_validがFalseを返す場合、 'form.errors'には何が含まれていますか?なぜテンプレートにエラーを表示しないのですか? –
申し訳ありませんが、私は疑問があると思いました。登録用紙に問題があります。私はform2を印刷するとき、私は入力がないので、POSTは空です。テンプレートのエラーは、フィールドが空であることを示します。 – user1050632