12

我想在查询字符串的帮助下将一些成功消息从 get 方法打印回索引页面(home.html),即模板页面。我已使用重定向到索引页面

    return HttpResponseRedirect("/mysite/q="+successfailure)

现在我想打印字符串成功以及索引文件(或模板文件/home.html 文件)中的其他内容。

我已经搜索了解决方案,发现应该将“ django.core.context_processors.request context ”添加到设置中。但是我没有找到添加它的地方。我目前正在使用 python 2.7 和 django 1.4.3。

我也尝试使用

    render_to_response("home.html",{'q':successfailure})

但是,结果打印在当前页面中(addContent.html- 我不想要),但我想将 url 发送到 '/mysite/' 并在那里打印结果。

请提出适当的解决方案。提前致谢。

4

2 回答 2

31

这些是默认的上下文处理器: https ://docs.djangoproject.com/en/dev/ref/templates/api/#using-requestcontext

TEMPLATES = [ {"OPTIONS": { "context_processors": [
    'django.template.context_processors.debug',
    'django.template.context_processors.request',
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',
]}}]

如果它不在您的设置中,那么您还没有覆盖它。现在就这样做。

然后在您的模板中,如下所示:

{% if request.GET.q %}<div>{{ request.GET.q }}</div>{% endif %}

另外,我在您的链接网址中注意到您没有使用查询字符串运算符,?. 你应该:

return HttpResponseRedirect("/mysite/?q="+successfailure)
于 2013-02-17T20:09:37.973 回答
1

我不确定我是否理解这个问题,但您可以使用request.GET.

因此,您可以通过将 successfailure 变量添加到上下文中来调整呈现 home.html 的视图。就像是 -

def home_view(request):
    #....
    successfailure = request.GET
    return render(request, 'home.html', {'succsessfailure': successfailure.iteritems()})

然后遍历模板中的变量

{% for key, value in successfailure %}
    <p>{{ key }} {{ value }}</p>
{% endfor %}

如果查询字符串中有一个特定的键,您可以获取该值request.GET['your_key']并删除调用iteritems()(连同模板中的迭代)。

于 2013-02-17T20:09:06.960 回答