【问题标题】:Using django-compressor with render_block from sekizai_tags使用 django-compressor 和 sekizai_tags 中的 render_block
【发布时间】:2015-08-22 13:45:41
【问题描述】:
我希望能够
- 将所有 js/css 编译成单个缩小文件,这就是
django-compressor 所做的。
- 能够从包含和继承的模板中添加 js/css 文件。
当我尝试时:
{% compress css file %}
{% render_block "css" %}
{% endcompress %}
我收到错误:Invalid block tag: 'endcompress'
但我认为主要原因是来自sekizai docs:
{% render_block %} 标签不得放置在模板标签块内(带有结束标签的模板标签,例如{% block %}...{% endblock %} 或{% if %}...{% endif %})。
我做错了什么还是有其他方法?
【问题讨论】:
标签:
django
django-templates
django-compressor
django-sekizai
【解决方案1】:
看起来django-compressor explicitly provides this interaction,但不是把render_block放在compress/endcompress里面:
{% load sekizai_tags %}
{% render_block "<js/css>" postprocessor "compressor.contrib.sekizai.compress" %}
其实{% compress %}标签在这里根本不用。
<head>
...
<!-- css -->
{% render_block "css" postprocessor "compressor.contrib.sekizai.compress" %}
{% block css %}{% endblock %}
<!-- end js -->
...
</head>
... then in another template ...
{% block css %}
{% addtoblock "css" %}
{{ form.media.css }}
<link rel="stylesheet" type="text/css" href="..." />
{% endaddtoblock %}
{% endblock %}
我使用block css 只是为了有任何块可以放入addtoblock,否则它将不起作用(除非它在同一个模板文件中):
如果{% addtoblock %}标签用于扩展模板,标签必须放在{% block %}...{% endblock %}标签内。