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_block和addtoblock来自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)
希望能帮到你.
来自包含标记的模板(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)
| 归档时间: |
|
| 查看次数: |
4583 次 |
| 最近记录: |