5

我一直在使用 Django Compressor 来管理我的 coffee/less 文件,它非常适合开发,但是我遇到了一些问题来使它适用于我的生产部署。

我的想法是让 apache 托管静态文件,可能在另一台服务器上。我正在设置COMPRESS_OFFLINE = True文件settings.py

然后我执行以下操作

  • python manage.py compress- 这会填充CACHE我的目录中的static目录,其中将收集所有静态文件。
  • python manage.py collectstatic- 这会将我项目中所有应用程序(其中一些不使用压缩器)的静态文件收集到我的static目录中。
  • static目录复制到某个地方以使用 apache 托管。并设置 apache 来提供文件。
  • 修改文件中的static_url变量settings.py指向静态服务器。

如果我打开任何页面,我的服务器上会出现以下错误,这似乎只在我有文件时DEBUG = False才会COMPRESS_OFFLINE = True发生settings.py

TemplateSyntaxError:渲染时捕获 OfflineGenerationError:您启用了离线压缩,但离线清单中缺少密钥“777ba26736d046ab043dc151e7e9a060”。您可能需要运行“python manage.py compress”。

当我检查static/CACHE目录时,我确认错误内容,这是我的manifest.json文件:

{
  "6189b8598993d1cbdbd35d4dfd1a6711": "<script type=\"text/javascript\" src=\"http://192.168.1.123/CACHE/js/2f6ca6616bd6.js\"></script>",
  "5c66dbed0e5b766c6e32773cd8585f3c": "<link rel=\"stylesheet\" href=\"http://192.168.1.123/CACHE/css/154d95903951.css\" type=\"text/css\" />"
}

如果我删除 CACHE 目录并重新运行python manage.py compress,我会在错误消息和清单文件中获得一组新的 ID,但清单上仍然缺少错误上的 ID。

所以,我想这里有两个问题。为什么它不起作用?实现这一目标的正确方法是什么?

谢谢。

4

3 回答 3

15

如果你运行了压缩,你仍然会收到消息

OfflineGenerationError:您启用了离线压缩,但离线清单中缺少密钥“4971a40e3b459a8cda8287a7f7caa96d”。您可能需要运行“python manage.py compress”

那么很可能你在压缩标签中有动态内容。确保 compress 始终是最里面的块,并且 compress 块内没有标签。

于 2012-12-21T17:41:14.497 回答
3

我猜你正在使用不支持静态模板标签 {% static "..." %} 的 django-compressor 1.1.2。

尝试使用以下命令安装 django-compressor 的开发版本:

pip install django_compressor==dev

它应该可以解决问题。

于 2012-05-12T12:21:26.960 回答
0

David Wolfe 是绝对正确的:必须深入挖掘我的所有代码才能摆脱 {% trans... 等。我是这样写的:

<script>
window.__enter_email = "{% trans "Enter correct email" %}"
window.__url = "{% url "shop:go" %}"
</script>
{% compress js %}
<script>
$("#bla")..... window.__enter_email ...
</script>
{% endcompress %}

希望,帮助某人!

于 2016-01-25T06:22:40.613 回答