如何从Django CMS占位符中的插件访问模板块
我有以下代码: base.html如何从Django CMS占位符中的插件访问模板块,django,django-cms,Django,Django Cms,我有以下代码: base.html <html> ... {% block test_block %} {# Some stuff to render #} {% endblock %} ... </html> {% extends "base.html" %} ... {% block content %} {% placeholder "content" %} {% endblock %} ... ... ... {% block tes
<html>
...
{% block test_block %}
{# Some stuff to render #}
{% endblock %}
...
</html>
{% extends "base.html" %}
...
{% block content %}
{% placeholder "content" %}
{% endblock %}
...
...
...
{% block test_block %}
{{ block.super }}
{# Some more stuff to render #}
{% endblock %}
...
plugin.html
<html>
...
{% block test_block %}
{# Some stuff to render #}
{% endblock %}
...
</html>
{% extends "base.html" %}
...
{% block content %}
{% placeholder "content" %}
{% endblock %}
...
...
...
{% block test_block %}
{{ block.super }}
{# Some more stuff to render #}
{% endblock %}
...
如果我将我的插件添加到它在占位符块中呈现的页面,正如预期的那样
如果我修改plugin.html以添加以下内容:
plugin.html
<html>
...
{% block test_block %}
{# Some stuff to render #}
{% endblock %}
...
</html>
{% extends "base.html" %}
...
{% block content %}
{% placeholder "content" %}
{% endblock %}
...
...
...
{% block test_block %}
{{ block.super }}
{# Some more stuff to render #}
{% endblock %}
...
然后我收到一个错误:“BlockNode”对象没有属性“context”。您是否在基本模板中使用了{{block.super}} 如果我尝试从plugin.html中扩展main_template.html或CMS_template(它们似乎相同?),我会得到以下错误:
调用Python对象时超出了最大递归深度
如何从插件中访问并附加到test_块?为了使用块,我相信您必须在一个模板中这样做,该模板从定义该块的模板扩展而来 然而,为了做你想做的事情,CMS利用了 有了它,您可以在
base.html
中使用它
{% load sekizai_tags %}
<html>
...
{% render_block "test_block" %}
...
</html>
这通常用于CSS和JS块,但对于您想要做的事情来说效果非常好。插件从何而来?据我所知,什么都没有。plugin.html顶部没有{%extends%}标记,但是添加一个标记会导致最大递归深度错误谢谢你,我会试试这个。我想我不确定的是,在占位符中呈现的插件是否隐式扩展了它们的父插件(在我的例子中是main_template.html)。我将尝试使用django sekizai并在几天内回复您。您的插件可以在任何页面上使用,并且您可能有针对不同类型页面的各种页面模板。Sekizai非常适合将JS或CSS包含在特定于插件的
base.html
中,所以它应该可以做你想做的事情。@AndyF你是怎么做的?嗨,马克,谢谢你回复我。抱歉耽搁了。Django Sekizai工作得很有魅力。