5

私はDjangoCompressorを使用してコーヒー/レスファイルを管理しており、開発に最適ですが、本番環境での展開で機能させるためにいくつかの問題がありました。

私の考えは、おそらく別のサーバーで静的ファイルをホストするためのapacheを用意することです。ファイルを設定COMPRESS_OFFLINE = Trueしていsettings.pyます。

それから私は次のことをします

  • python manage.py compress-これにより、すべての静的ファイルが収集されるディレクトリにディレクトリが追加されますCACHEstatic
  • python manage.py collectstatic-これにより、プロジェクト上のすべてのアプリ(コンプレッサーを使用しないアプリもあります)から静的ファイルがstaticディレクトリに収集されます。
  • staticapacheでホストされるディレクトリをどこかにコピーします。そして、ファイルを提供するためにapacheをセットアップします。
  • 静的サーバーを指すようにファイルstatic_url内の変数を変更します。settings.py

いずれかのページを開くと、サーバーで次のエラーが発生します。これは、ファイルを持っDEBUG = Falseている場合にのみ発生するようです。COMPRESS_OFFLINE = Truesettings.py

TemplateSyntaxError:レンダリング中にOfflineGenerationErrorがキャッチされました:オフライン圧縮が有効になっていますが、キー「777ba26736d046ab043dc151e7e9a060」がオフラインマニフェストにありません。「pythonmanage.pycompress」を実行する必要があるかもしれません。

ディレクトリをチェックする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がマニフェストに表示されません。

ですから、ここには2つの質問があると思います。なぜ機能しないのですか?これを達成するための適切な方法は何ですか?

ありがとう。

4

3 に答える 3

15

compressを実行しても、メッセージが表示される場合

offlineGenerationError:オフライン圧縮が有効になっていますが、キー「4971a40e3b459a8cda8287a7f7caa96d」がオフラインマニフェストにありません。「pythonmanage.pycompress」を実行する必要があるかもしれません

その場合、圧縮タグ内に動的コンテンツがある可能性があります。compressが常に最も内側のブロックであり、compressブロック内にタグがないことを確認してください。

于 2012-12-21T17:41:14.497 に答える
3

静的テンプレートタグ{%static "..."%}をサポートしていないdjango-compressor1.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 に答える