在表單提交場景中,表單發佈到「/ submit」。我想在成功時將用戶重定向到「/ sucess」,並在新網址傳遞一些消息給模板。如何在Django中做到這一點? render_to_response不會重定向,HttpResponseRedirect不會執行模板呈現。在Django中響應重定向的url
回答
如果你成功頁面需要一個動態的消息,您需要在那裏通過它在某種程度上。您可以通過您重定向到的URL(例如return HttpResponseRedirect('/success/?msg=My+success+message+here')
)中的GET參數或通過在會話中設置一些成功視圖可以選取的值來完成此操作。
還有就是你想要做什麼沒有什麼好辦法。瀏覽器提交表單,該表單將使用戶進行/提交。一旦你決定是否「成功」,那就太遲了;瀏覽器已經決定了它的目的地。你所能做的只是重定向。但是,正如你發現的那樣,重定向時很難保持你的POST狀態。
我會放棄這個。這不是網站應該如何工作。
Daniel Roseman的回覆可能是危險,將您的網站打開爲XSS漏洞。
請確保您從任何消息傳遞的HTML標籤剝離如果您必須這樣做。
一個更好的方式是重定向到/成功/味精= OK,並在您的視圖字典:
{ 'ok': 'Your success message' }
我認爲Django的已經做了這個,如果你延長generic view。在創建時,有一個可選參數「post_save_redirect」。該功能用於自動生成的Django管理系統。例如,如果你想要一個新的資源,說用戶,你去url「/用戶/添加」。提交後,將其重定向到「/ user/1」,並顯示成功消息「您剛剛保存了用戶#1」。所以這是可能的,但我仍在研究如何在不擴展通用視圖的情況下做到這一點。我對Django和python仍然很陌生,所以通過Django核心來看看他們是如何做到這一點對我來說不是那麼容易。
做你想做的事情的最佳方式是: 在你的視圖中將成功消息(或錯誤消息)設置爲字典。並使用render_to_response顯示任何模板。
在您的模板中,您可以驗證是否有消息,以及消息是錯誤消息還是成功消息。
一些這樣的: 在您看來:
if anyError:
dict = {"message" : {"error" : "The error message"}}
else:
dict = {"message" : {"success" :"The success message"}}
在你的模板
:
{% if message %}
{% if message.error %}
{{ message.error }}
{% else %}
{{ message.success }}
{% endif %}
{% endif %}
希望我已經幫助
我會建議使用Django框架的消息是用於一次性通知消息。
- 1. Django響應重定向變量url
- 2. 在Django URL中重定向
- 3. Django URL重定向
- 4. Django重定向URL
- 5. Django Url重定向
- 6. URL重定向Django
- 7. 在django的http響應重定向中使用反向
- 8. 在Django中的內部URL重定向
- 9. GCM URL和302重定向響應
- 10. AJAX - 重定向後獲取響應URL
- 11. 響應重定向url aspx頁面
- 12. 在Django 1.4.5中重定向url
- 13. Django url重定向問題
- 14. 重定向主鍵django {%url%}
- 15. 如何在Django的templateview重定向URL
- 16. Django的內部重定向/ URL重寫
- 17. Django將URL重定向到絕對URL
- 18. 在Grails中多次重定向響應
- 19. 在iframe中重定向的響應式網站沒有響應
- 20. 在不重定向的情況下更改響應URL
- 21. Django重定向到自定義URL
- 22. Django的:重定向更改密碼URL
- 23. Django的唯一URL重定向問題
- 24. Django的URL路徑重定向
- 25. Facebook的登錄Django和URL重定向?
- 26. 連接中的響應重定向
- 27. 響應與 '+' 重定向
- 28. 響應重定向回發
- 29. 從xml響應中提取URL並重定向
- 30. Django:當目標URL也是重定向時測試重定向
我假設HttpResponseRedirect只是告訴客戶端重定向?它重定向的頁面不會負責渲染嗎? 另外,如果有人手動進入您的/成功頁面? – 2009-12-11 14:50:59