2013-02-17 83 views
3

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

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

现在我想打印在索引文件的其他内容(或模板文件/ Home.html文件中)沿绳成功的索引页。

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

我还试图用

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

然而,结果是在当前页打印(addContent.html-我不想),但我想要的网址送入“/ mysite的/”和在那里打印结果。

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

回答

12

这些都是默认的上下文处理器: https://docs.djangoproject.com/en/dev/ref/settings/#template-context-processors

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth", 
    "django.core.context_processors.debug", 
    "django.core.context_processors.i18n", 
    "django.core.context_processors.media", 
    "django.core.context_processors.static", 
    "django.core.context_processors.tz", 
    "django.contrib.messages.context_processors.messages", 
    #add this 
    "django.core.context_processors.request" 
) 

如果不是在你的设置,比你还没有覆盖它。现在就这样做。

然后在模板中,这样的事情:

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

也,即时在你的链接网址注意到你没有使用查询字符串操作?应该是:

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

“django.core.context_processors.request”现在是“django.template.context_processors.request” – Benos 2017-05-25 03:29:41

1

我不确定我是否理解这个问题,但是您可以使用request.GET访问查看查询字符串。

因此,您可以通过在上下文中添加successfailure变量来调整呈现home.html的视图。喜欢的东西 -

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

然后遍历throught在你的模板中的变量

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

如果有查询字符串中你可以用request.GET['your_key']获得的价值和呼叫与下降到iteritems()(沿着特定的键在模板中迭代)。

+0

@ user2081099你可以标记我的回答是通过点击答案左上方的大灰色勾号(个人而言我更喜欢Francis的解决方案)来接受答案 – 2013-02-17 21:31:41

+0

顶部建议@AidanEwen,我需要在form.is_valid()失败并触发此引导模式窗口技术工作的一种享受。 。 – campervancoder 2014-05-14 09:00:29