如何从Django CMS中的插件重定向?

时间:2013-05-16 02:32:14

标签: django django-cms

我在插件中有一个表单,在提交时我需要重定向到另一个页面。

实现这一目标的最佳方法是什么?



所以可能的解决方案是:

  1. 使用App-Hook
  2. 在您的插件呈现方法中抛出异常,该异常将被中间件类捕获并从那里进行重定向。
  3. 创建一个中间件类,并在“process_response”方法中检查在插件的render方法期间添加的请求对象上的值,然后执行重定向。

1 个答案:

答案 0 :(得分:0)

插件并不适合处理POST请求,也无法从插件中影响HTTP Response对象(该响应的内容除外)。

插件没有钩子来处理POST请求的原因是单个页面通常由几个插件组成,并且弄清楚哪个插件应该处理POST请求将非常困难。出于同样的原因,他们无法更改响应,因为两个插件可能会尝试以不兼容的方式更改响应。

解决方案是为插件提供专用的POST端点(通过urlpatterns或通过Apphook静态)。然后该端点将重定向到另一个页面,或者表单所在的页面,因此插件将使用它发送一些数据。或者,插件通过AJAX将表单提交到该端点,并在javascript中重定向/动作。