gpt4 book ai didi

python - 当我刷新页面时,我的自定义 Django CMS 插件的子插件变得无效

转载 作者:太空宇宙 更新时间:2023-11-03 17:16:56 24 4
gpt4 key购买 nike

我编写了最简单的 Django CMS 插件,允许 child 使用(我使用 Python 3.4.3、Django 1.7.10、Django CMS 3.1.3):

cms_plugins.py:

from cms.plugin_base import CMSPluginBase
from cms.plugin_pool import plugin_pool

class SamplePlugin(CMSPluginBase):
allow_children = True
render_template = "sample_plugin.html"

def render(self, context, instance, placeholder):
context['instance'] = instance
return context

plugin_pool.register_plugin(SamplePlugin)

模板/sample_plugin.html:

{% load cms_tags %}

{% for plugin in instance.child_plugins %}{% render_plugin plugin %}{% endfor %}

我不使用自定义模型,只是渲染子插件。

然后,我在结构模式下打开一个页面,并将该 Sampe 插件的一个实例和一个样式插件添加到占位符中 - 到目前为止,一切顺利。我可以编辑两者,当然我自己的插件不需要编辑太多。当我现在将样式插件移动到示例插件中时,我仍然可以编辑样式插件。切换到内容模式并检查 DOM,插件确实是嵌套的。

但是,如果我现在刷新页面,就会发现明显不一致的地方:

  • 示例插件对应的 div 在 DOM 中为空
  • 在结构模式下,嵌套样式插件不再显示上下文菜单
  • 双击它会打开父级示例插件的编辑器(DOM 在 iframe 源中显示父级的 ID。手动更改该 URL 将打开右侧编辑器)
  • 样式插件无法再移动

快速检查 djangocms_style 并没有显示出任何与问题相关的明显差异。这是怎么回事?

<小时/>

我还得到类似于 these 的堆栈跟踪,但它们似乎无关 - 添加任何插件时都会发生 - 并且不会破坏其他任何内容 - 没有 503 或任何东西。

最佳答案

问题似乎出在模板中,应该是

{% for plugin in instance.child_plugin_instances %}

如果

{% for plugin in instance.child_plugins %}

这似乎在 Django CMS 2.4 和 3.0 之间发生了变化:比较 2.4 上的信息和 3.0 (查看parent.html)

我发现没有必要重写render来添加context['instance'];样式插件也不会这样做。

关于python - 当我刷新页面时,我的自定义 Django CMS 插件的子插件变得无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33584463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com