2011-11-09 32 views
0

我在閱讀djangobook,並獲得有關HttpResponseRedirectrender_to_response的問題。發送變量以及HttpResponseRedirect的最佳方式

假設我有一個聯繫表單,它發佈數據以確認視圖。它貫穿所有的驗證和數據庫的東西。然後,作爲一個通常的方式,我輸出與

return render_to_response('thank_you.html', 
          dict(user_code = user_code), 
          context_instance=RequestContext(request)) 

HTML但是,這本書建議「你應該總是發出成功POST請求重定向。」因爲如果用戶在該頁面上「刷新」,該請求將被重複。我想知道通過HttpResponseRedirectthank_you.html發送user_code的最佳方法是什麼。

回答

0

傳遞信息的查詢字符串:

thank_you/?user_code=1234 

或者使用一個會話變量。

查詢字符串的問題是用戶可以看到數據。

0

當你send a redirect,你發送用戶迴應(a 302 HTTP response),他們然後提出一個全新的請求提供的URL。這是一個全新的請求/響應週期,因此除非將它保存在會話變量,緩存,cookie等中,否則無法提供數據。

您可以做什麼而不是告訴用戶重定向,就是調用查看你想要從相同的請求(例如,你將發出重定向的點)中自己展示他們,然後你可以通過你喜歡的任何東西。

相關問題