Работает ли django-компрессор с наследованием шаблонов? - PullRequest
7 голосов
/ 05 марта 2012

Я использую django-compress для сжатия статических файлов CSS и Javascript моего сайта.Поскольку я обслуживаю статические ресурсы моего сайта через Amazon S3, я также использую django-хранилища для загрузки своих файлов на S3.

Вот моя проблема: я пытаюсь очиститьbase.html шаблон, который могут наследовать и расширять все другие шаблоны моего сайта.Вот как это выглядит в настоящее время:

{% load compress %}

<html>
 <head>
  <!-- test -->
  {% compress css %}
   <link rel="stylesheet" type="text/css" media="screen" href="{{ STATIC_URL }}css/styles.css" />
  {% endcompress %}

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

  {% compress js %}
  {% block js %}{% endblock %}
  {% endcompress %}
 </head>
 <body>
  {% block body %}{% endblock %}
 </body>
</html>

Как вы можете видеть, я пытаюсь сделать здесь - позволить моим шаблонам, которые наследуют этот шаблон, переопределить css иjs блоков, чтобы они могли определять свои собственные CSS и JavaScript для сжатия.К сожалению, этого не происходит.

Когда я запускаю python manage.py compress (чтобы django-компрессор анализировал мои шаблоны и генерировал сжатый код javascript и css), он фактически не находит мои включенные файлы css и javascript.

Например, вот шаблон index.html моего сайта:

{% block css %}
 {{ block.super }}
 <link rel="stylesheet" type="text/css" media="screen" href="{{ STATIC_URL }}css/index.css" />
{% endblock %}

Когда я пытаюсь посетить эту страницу на моем сайте, я получаю сообщение об ошибке, что сжатый файл несуществовать.

Я считаю, что происходит то, что команда python manage.py compress не проверяет мои шаблоны, которые наследуются от base.html.И поскольку он не анализирует их, он не генерирует никакого сжатого кода.

Я бы очень хотел, чтобы это работало, потому что единственный найденный мной обходной путь - это добавление * 1030 вручную.* теги в каждом файле шаблона, которые у меня есть.Я просто ненавижу это делать, потому что он повторяет так много кода повсюду: (

Любой совет будет принят с благодарностью.

1 Ответ

5 голосов
/ 10 марта 2012

Полагаю, вы используете сжатие в автономном режиме, и в этом случае наследование шаблона не работает так, как можно было бы ожидать.См. Эти проблемы, относящиеся к этой «проблеме»:

...