如何从Django CMS中的插件重定向?
我在插件中有一个表单,在提交时我需要重定向到另一个页面 实现这一目标的最佳方式是什么如何从Django CMS中的插件重定向?,django,django-cms,Django,Django Cms,我在插件中有一个表单,在提交时我需要重定向到另一个页面 实现这一目标的最佳方式是什么 所以可能的解决方案是: 使用应用程序挂钩 在插件呈现方法中抛出一个异常,该异常将被中间件类捕获,并从此处执行重定向 创建一个中间件类,并在“process\u response”方法中检查请求对象上的值,该值是在插件的render方法中添加的,然后执行重定向 插件并不真正适合处理POST请求,也无法从插件影响HTTP响应对象(该响应的内容除外) 插件没有处理POST请求的钩子的原因是,一个页面通常由几个插件组
所以可能的解决方案是:
插件并不真正适合处理POST请求,也无法从插件影响HTTP响应对象(该响应的内容除外) 插件没有处理POST请求的钩子的原因是,一个页面通常由几个插件组成,要弄清楚哪个插件应该处理POST请求将非常困难。出于同样的原因,他们无法更改响应,因为两个插件可能会尝试以不兼容的方式更改响应
解决方案是为插件提供一个专用的POST端点(通过urlpatterns或Apphook进行静态)。然后,该端点将重定向到另一个页面,或者表单所在的页面,因此插件将发送一些数据。或者,该插件通过AJAX将表单提交到该端点,并在javascript中重定向/执行操作。这是一个呈现表单的自定义插件。好的,因此您还需要通过CMS应用程序挂钩将页面连接到处理帖子的视图。然后你就可以重新定向了。我很害怕。根据我所研究的,唯一的解决方案是在插件中抛出一个异常,并在中间件类中捕获它。或者在请求中添加一些东西,并在呈现后在某处使用中间件来执行重定向。那么,当插件呈现表单时,您能否将表单操作指向您想要的视图,然后从那里处理重定向?一种选择是使用ajax提交表单,然后处理重定向客户端。那么你就不必有应用程序挂钩了。