1

フォームからいくつかの情報を収集して同じテンプレートに表示できる単純なアプリケーションを作成しています..

以下はコードです、

テンプレートから-- にアクセスしようとすると{{request.POST['fname']}}、次のエラーが表示されます。

Could not parse the remainder: '['fname']' from 'request.POST['fname']'

テンプレートのリクエスト変数にアクセスするにはどうすればよいですか?

views.py

    def test_page(request):
        print 'request.method =', request.method
        if request.method == 'POST':
            print 'request.post = ', request.POST['fname']
            variables = RequestContext(request,{'display_form':False})
            return render_to_response('test_page.html',variables)
        else:
            variables = RequestContext(request,{'display_form':True})
            return render_to_response('test_page.html',variables)

template

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Test Page</title>
    </head>
    <body>
    This is a test page
    {% if display_form %}
        <form action="." method="post">{% csrf_token %}
            FIRST NAME : <input type="text" name="fname">
            <input type="submit" value="register"/>
        </form>
    {% else %}
        {{request.POST['fname']}}
    {% endif %}

    </body>
    </html>
4

4 に答える 4

2

あなたは書ける:

{{ request.POST.fname }}

fnameこれにより、 inのルックアップが実行されrequest.POSTます。

Django は以下をサポートしています:

  • 辞書検索 ( foo['bar'])
  • 属性検索 ( foo.bar)
  • リスト検索 ( foo[bar])

書くときはいつでもfoo.bar(ドキュメントの変数とルックアップを参照してください)。

于 2013-11-07T15:52:56.833 に答える
1

テンプレートで辞書の値にアクセスする適切な方法は次のとおりです。{{ request.POST.fname }}

于 2013-11-07T15:52:55.730 に答える
0

まず、辞書のようなオブジェクトを介してインデックスを作成する必要がありますrequest.POST.fname。また、常に文字列を返します。参考までに。

次に、POSTリクエストを処理した後は、通常の ではなく、常にリダイレクト ( HttpResponseRedirect) を発行する必要がありますrender。これにより、ユーザーが [戻る] ボタンを押した場合にデータが 2 回送信されるのを防ぐことができます。

これはベスト プラクティスであり、常に実行する必要があります。

于 2013-11-07T15:58:49.490 に答える