Джанго-компрессор и наследование шаблонов - PullRequest
11 голосов
/ 17 ноября 2010

Я использую приложение django-compress в Django 1.2.3 для минимизации и объединения нескольких включенных файлов CSS и JS.В базовом шаблоне у меня есть

{% load compress %}
{% compress js %}
{% block js %}
<script type="text/javascript" src="/site_media/js/jquery.query-2.1.7.js">
{% endblock %}

, а в дочернем -

{% block js %}
{{block.super}}
<script type="text/javascript" src="/site_media/js/jquery.validate.min.js">
{% endblock %}

Когда шаблоны отображаются, первый тег сценария корректно минимизируется, а второй - нет.В аналогичных сценариях я подтвердил, что проблема заключается в наследовании.

Я не хочу продолжать использовать теги сжатия в дочерних шаблонах, потому что половина смысла в использовании этого приложения - объединение файлов и сокращение HTTP-запросов.Я что-то пропустил?Есть ли другое решение, на которое я должен обратить внимание?

Ответы [ 2 ]

15 голосов
/ 17 ноября 2010

Я использую django-компрессор с Django 1.2, и я настроил его так:

{% compress js %}
<script type="text/javascript" src="{{ MEDIA_URL }}js/jquery-1.4.2.min.js"></script>
{% block extra_compressed_js %}{% endblock %}
{% endcompress %}

{% block external_js %}{% endblock %}

И с моим extra_compressed_js блоком я буду часто использовать метод, который вы описали, с {{ block.super }}, чтобы добавить больше js через наследование. У меня это работает без проблем. Вы должны быть осторожны в том, что все сжатые JS должны быть доступны в локальной файловой системе. Вот почему у меня есть отдельный блок external_js для JS, который поступает из внешнего источника.

Мне кажется, что происходит что-то еще. Убедитесь, что ваша копия компрессора обновлена, а затем проверьте свое наследование, чтобы убедиться, что оно действительно работает правильно. Один из способов сделать это - установить в настройках COMPRESS=False и убедиться, что весь необходимый вам JavaScript включен в отображаемый шаблон.

0 голосов
/ 17 ноября 2010

Я не знаю, сработает ли это, но, похоже, стоит попробовать:

Сначала в вашем базовом шаблоне есть эти блоки:

{% compress js %}
{% block js %}
{% endblock %}
{% endcompress %}

{% compress css %}
{% block css %}
{% endblock %}
{% endcompress %}

, а затем у данного потомкаtemplate:

{% block js %}
{{ block.super }}
<script type="text/javascript" src="/site_media/js/jquery.query-2.1.7.js">
{% endblock %}

Всегда используйте block.super.Как я уже сказал, я не знаю, сработает ли это, но может.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...