サイトのルートにある次のフォームがあります/
<form action='/play/' method='post'>
{% csrf_token %}
{{ form.player_name }}
<input id='play' type='submit' value='Play'>
</form>
次に、このフォームを検証するビューがあります。
def login(request):
context = {}
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
return HttpResponseRedirect('/play/')
else:
context.update(dict(form=form))
else:
context.update(dict(form=LoginForm(initial={'player_name':'Please tell us your name'})))
return render_to_response('login.html', context, context_instance=RequestContext(request))
そして実際のプレイビュー:
def play(request):
p1 = briscola.Player(request.POST['player_name'])
問題はもちろん、リダイレクトによってPOST
データが失われることです。しかし、なぜPOST
それ自体が再生ビューに直接移動しないのform.is_valid
ですか?