0

HTMLフォームの送信時に空白のHTMLページ(test_page1.html)に移動する必要があります..どうすればDjangoでそれを行うことができますか?

urls.py ファイルに新しいページのマッピングがありません。

test_page.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<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="test_page1.html" method="post">{% csrf_token %}
        FIRST NAME : <input type="text" name="fname">
        <input type="submit" value="register"/>
    </form>
{% else %}
    {% autoescape off %}
    {{ firstname }}
    {% endautoescape %}
{% endif %}

</body>
</html>

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

1 に答える 1

0

django ドキュメントに正しい例があります: https://docs.djangoproject.com/en/1.6/topics/forms/#using-a-form-in-a-view

render_to_response の代わりにリダイレクト応答が必要です。

from django.http import HttpResponseRedirect

関数の post 部分は次のようになります。

if request.method == 'POST':
    # Your custom processing.
    if everything_is_alright:
        return HttpResponseRedirect('/the_blank_page/')
    # Not everything is right, so re-render the original page with the form.
    # Put your custom render_to_response() stuff here.

Django の実際のフォーム メカニズムを使用することでメリットが得られることに注意してください。Django は、これらすべてにcgi.escape加えて多くの追加の安全機能を実行します。

于 2013-11-07T18:14:52.670 に答える