我使用的是django-compressor来压缩我站点的静态CSS和Javascript文件。由于我通过Amazon S3服务于我的网站的静态资产,因此我还使用django-storages将我的文件上传到S3。django-compressor是否可以使用模板继承?
这是我的问题:我试图做一个干净的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-compressor分析我的模板并生成压缩的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
继承。由于它不分析它们,它不会生成任何压缩的代码。
我真的想让这个工作,因为我迄今发现的唯一解决方法是手动添加{% compress %}...{% endcompress %}
标签在我明确每个单一的模板文件。我只是不愿意这样做,因为它重复无处不在这么多的代码:(
任何意见,将不胜感激。
声音对我来说喜欢这个问题是因为错误指定:文件是否存在于本地文件系统上?记住S3,你必须设置存储来保存本地以及远程。 – 2012-03-04 22:19:53
我目前正在通过自定义的CachedS3BotoStorage类来处理django-compressor文档。这部分工作正常(例如:如果我不试图压缩{%block%} .. {%endblock%}片段)。另外:当我实际运行'python manage.py compress'管理命令时,我没有收到任何错误 - 只有当我实际尝试查看从'base.html'继承的页面并覆盖css或js块时才会出现错误。 – rdegges 2012-03-04 23:03:51