2

サイトのルートにある次のフォームがあります/

<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ですか?

4

0 に答える 0