2013-02-17 44 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