Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Django CMS占位符中的插件访问模板块_Django_Django Cms - Fatal编程技术网

如何从Django CMS占位符中的插件访问模板块

如何从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

我有以下代码:

base.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

<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工作得很有魅力。