当我刷新页面时,我的自定义 Django CMS 插件的子项变得无效
When I refresh the page, my custom Django CMS plugin's children become invalid
我已经编写了最简单的允许儿童使用的 Django CMS 插件(我使用 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)
templates/sample_plugin.html:
{% load cms_tags %}
{% for plugin in instance.child_plugins %}{% render_plugin plugin %}{% endfor %}
我不使用自定义模型,只渲染子插件。
然后我在结构模式下打开了一个页面,并将该 Sampe 插件的一个实例和一个样式插件添加到一个占位符 - 到目前为止,一切顺利。我可以编辑两者,当然我自己的插件没有太多可编辑的。当我现在将 Style Plugin 移动到我的示例插件中时,我仍然可以编辑 Style Plugin。切换到内容模式并检查 DOM,插件确实是嵌套的。
但是,如果我现在刷新页面,显然不一致:
- Sample Plugin对应的
div
在DOM 中为空
- 在结构模式下,嵌套样式插件不再显示上下文菜单
- 双击它打开父示例插件的编辑器(DOM 显示 iframe 源中父的 id。手动更改 URL 打开正确的编辑器)
- 不能再移动样式插件
快速检查 djangocms_style 没有发现任何与问题相关的明显差异。这是怎么回事?
我也得到类似于 these 的堆栈跟踪,但它们似乎无关 - 添加任何插件时都会发生这种情况 - 并且不会破坏其他任何东西 - 没有 503 或任何东西。
我已经编写了最简单的允许儿童使用的 Django CMS 插件(我使用 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)
templates/sample_plugin.html:
{% load cms_tags %}
{% for plugin in instance.child_plugins %}{% render_plugin plugin %}{% endfor %}
我不使用自定义模型,只渲染子插件。
然后我在结构模式下打开了一个页面,并将该 Sampe 插件的一个实例和一个样式插件添加到一个占位符 - 到目前为止,一切顺利。我可以编辑两者,当然我自己的插件没有太多可编辑的。当我现在将 Style Plugin 移动到我的示例插件中时,我仍然可以编辑 Style Plugin。切换到内容模式并检查 DOM,插件确实是嵌套的。
但是,如果我现在刷新页面,显然不一致:
- Sample Plugin对应的
div
在DOM 中为空
- 在结构模式下,嵌套样式插件不再显示上下文菜单
- 双击它打开父示例插件的编辑器(DOM 显示 iframe 源中父的 id。手动更改 URL 打开正确的编辑器)
- 不能再移动样式插件
快速检查 djangocms_style 没有发现任何与问题相关的明显差异。这是怎么回事?
我也得到类似于 these 的堆栈跟踪,但它们似乎无关 - 添加任何插件时都会发生这种情况 - 并且不会破坏其他任何东西 - 没有 503 或任何东西。