2013-05-16 26 views
3

我在提交的插件中有一個表單,我需要重定向到另一個頁面。如何從Django CMS的插件重定向?

完成此操作的最佳方法是什麼?



所以可能的解決方案是:

  1. 使用應用程序掛機
  2. 拋出一個異常在你的插件渲染方法會通過一箇中間件類被捕獲並做從那裏重定向。
  3. 創建中間件類,並在「process_response」方法期間檢查在插件的呈現方法期間添加的請求對象上的值,然後執行重定向。
+0

哪種形式的插件? – Brandon

+0

其呈現窗體的自定義插件。 – loki70x7

+0

好的,所以你還需要將頁面掛接到通過CMS應用程序鉤子處理POST的視圖。那麼你將能夠做你的重定向。 – Brandon

回答

0

插件並不真正適合處理POST請求,也沒有辦法影響插件的HTTP響應對象(該響應的內容除外)。

Plugins沒有處理POST請求的鉤子的原因是單個頁面通常由多個插件組成,找出哪個插件應該處理POST請求將非常困難。出於同樣的原因,他們無法更改響應,因爲兩個插件可能會嘗試以不兼容的方式更改響應。

解決方案是爲您的插件提供專用的POST端點(通過urlpatterns靜態或通過Apphook)。然後該端點將重定向到另一個頁面或表單所在的頁面,因此插件會使用它發送一些數據。或者,該插件通過AJAX將該表單提交給該端點,並在JavaScript中重定向/行爲。