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 的实际表单机制。cgi.escapeDjango为您完成了所有这些工作,提供了许多额外的安全功能。

于 2013-11-07T18:14:52.670 回答