django - 如何从 Django CMS 中的插件进行重定向?

标签 django django-cms

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

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



因此可能的解决方案是:

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

最佳答案

插件并不真正适合处理 POST 请求,并且无法影响插件的 HTTP 响应对象(除了该响应的内容)。

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

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

关于django - 如何从 Django CMS 中的插件进行重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16578090/

相关文章:

python - Django 中的删除功能不起作用

django - 使用 Django annotate(Count) 和可为空的外键

python - DjangoCMS : how to auto-add default plugins in placeholders

python - Django Rest 框架 - 外键上的 NOT NULL 约束

javascript - 使用ajax加载模板时未呈现脚本

Django REST 框架 : require login to view API

django-cms:apphooks 使用的 url 不适用于 reverse() 或 {% url %}

python - 将 django cms 页面渲染为 json

python - djangocms-installer 不询问设置问题

python - 安装 djangocms-blog 后出现导入错误 : cannot import name 'python_2_unicode_compatible' from 'django.utils .encoding'