0

我是 Django 和 HTML 的新手,我正在尝试显示从 HttpResponseRedirect 页面上的表单派生的数据列表。我一直在阅读 Django API,但我仍然不确定如何使用 HttpResponse() 和 HttpResponseRedirect()。

截至目前,我了解 response = HttpResponse() 生成 HttpResponse 对象, HttpResponseRedirect('results') 将浏览器重定向到新的 html 模板页面。我不知道如何编写 results.html 以显示在我的浏览器上。

我需要有关如何编写 HTML 页面的帮助。

我还需要有关如何将数据列表传递到该 html 页面的帮助。

我也可以在表单所在的同一 html 页面上显示列表,而不是加载新页面。

当前代码:def 联系人(请求):

if request.method == 'POST': # If the form has been submitted...
    form = ContactForm(request.POST) # A form bound to the POST data
    chosen = []
    if form.is_valid():
        strt = time.time()
        form = form.cleaned_data
        parameters = organize(form)
        print 'input organized'
        chosen, companies = multiple(parameters)
        end = time.time()
        pp.pprint(companies)
        print 'companies matching search filters: ' , len(companies)

        print 'total time: ' , str(end-strt)



    response = HttpResponse(chosen)
    return HttpResponseRedirect('results') # Redirect after POST
4

1 回答 1

2

我认为你想要的是 Django 的render_to_response快捷方式。第一个参数是要使用的 html 模板,第二个参数是要传递给该模板的值字典。

在您的 views.py 文件的顶部,包括:

from django.shortcuts import render_to_response

并修改您的代码以阅读:

if request.method == 'POST': # If the form has been submitted...
    form = ContactForm(request.POST) # A form bound to the POST data
    chosen = []
    if form.is_valid():
        strt = time.time()
        form = form.cleaned_data
        parameters = organize(form)
        print 'input organized'
        chosen, companies = multiple(parameters)
        end = time.time()
        pp.pprint(companies)
        print 'companies matching search filters: ' , len(companies)
        print 'total time: ' , str(end-strt)
    return render_to_response('results.html', {'chosen':chosen,'companies':companies,'start':start,'end':end}) # Redirect after POST

请注意,第二个参数是您要传递给模板的值的字典。按照我的编写方式,您传递了 4 个值(chosen, companies, start, end),但您可以包含任意数量的值。

results.html然后在您的 Templates 目录中创建一个名为的文件(在文件中的TEMPLATE_DIRS变量中指定settings.py)。它可能看起来像这样:

<!DOCTYPE html>
<body>
<h1>Results</h1>
<p>Chosen: {{chosen}}</p>
<p>Companies: {{companies}}</p>
<p>Start: {{start}}</p>
<p>End: {{end}}</p>
</body>

Django 模板语法使用双花括号{{}}来显示传递给模板的变量。

请注意,此方法不会更改 URL。如果您需要这样做,请尝试查看.

于 2012-09-17T18:30:01.667 回答