Python 当我刷新页面时,我的自定义Django CMS插件';孩子们都病倒了
我已经编写了最简单的Django CMS插件,允许使用儿童(我使用Python 3.4.3、Django 1.7.10、Django CMS 3.1.3): cms_plugins.py:Python 当我刷新页面时,我的自定义Django CMS插件';孩子们都病倒了,python,django,django-cms,Python,Django,Django Cms,我已经编写了最简单的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_
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,插件实际上是嵌套的
但是,如果我现在刷新页面,则明显存在一些不一致之处:
- 与示例插件对应的
在DOM中为空div
- 在结构模式下,嵌套样式插件不再显示上下文菜单
- 双击它将打开父示例插件的编辑器(DOM在iframe源中显示父插件的id。手动更改该URL将打开右侧编辑器)
- 样式插件不能再四处移动
我也得到了类似于的堆栈跟踪,但它们似乎是不相关的-这发生在添加任何插件时-并且不会破坏其他任何东西-没有503或任何东西。问题似乎在模板中,应该是这样的
{% for plugin in instance.child_plugin_instances %}
相反,如果
{% for plugin in instance.child_plugins %}
这似乎在Django CMS 2.4和3.0之间发生了变化:比较和上的信息(查看parent.html
)
我发现没有必要重写render
来添加context['instance']
;样式插件也不能做到这一点