django sekizai {%addtoblock%}标签无法正常工作

Vik*_*ati 13 django django-templates django-sekizai

我正在尝试实现django sekizai应用程序.它正在复制我正在添加的js文件.

基本模板:

{% load sekizai_tags %}
...
{% render_block "my_js" %}
Run Code Online (Sandbox Code Playgroud)

使用此基础的模板:

{% load sekizai_tags %}
<div id="a1" >
    {% addtoblock "my_js" %}
        <script type="text/javascript" src="{{ MEDIA_URL }}js/my_js.js"></script>
    {% endaddtoblock %}
</div>
{% addtoblock "my_js" %}
    <script type="text/javascript" src="{{ MEDIA_URL }}js/my_js.js"></script>
{% endaddtoblock %}
Run Code Online (Sandbox Code Playgroud)

现在渲染的模板已经呈现了两次.但是当我尝试在div中添加相同的脚本时,它没有重复.如果有人能够对此有所了解,我将不胜感激!

此外,当我尝试在模板标记呈现的模板中使用{%addtoblock%}时,脚本会丢失(它既不包含也不保留在该模板中).

注意:模板标签render_blockaddtoblock来自django-sekizai包.

Bra*_*don 27

{% addtoblock %}并且{% endaddtoblock %}必须在继承另一个模板的模板中的块内.

# base.html
<html>
    ...
    {% render_block 'js' %}
    {% block js %}{% endblock %}
</html>


# some-page.html
{% inherits 'base.html' %}

{% block js %}
    {% addtoblock 'js' %}
        <script type="text/javascript" ... />
    {% endaddtoblock %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

希望能帮到你.


laf*_*ste 5

来自包含标记的模板(something.html)中的{%addtoblock%} :

from django import template
from django.conf import settings

register = template.Library()

@register.inclusion_tag('something.html', takes_context=True)
def render_something(context, some_arg):
    sezikai_ctx_var = getattr(settings, 'SEKIZAI_VARNAME', 'SEKIZAI_CONTENT_HOLDER')
    attrs = {
        'some_arg': some_arg,
        sezikai_ctx_var: context[sezikai_ctx_var]
    }
    return attrs
Run Code Online (Sandbox Code Playgroud)