問題タブ [django-compressor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - Djangoアプリのcollectstaticを実行しているときの属性エラー
collectstaticを実行すると、次のエラーが発生します。
ストレージの「AWS_IS_GZIPPED」設定を使用してファイルをgzipで圧縮するまでは、すべて正常に機能します(以下のsettings.pyを参照)。
botoを使用して静的ファイルをS3に送信し、django-compressorを使用して圧縮するdjango-storagesを使用しています。
これが私のエラーの完全なトレースバックです:
これが私のstorage.pyです
これは、 django-compressorのドキュメントから直接取得されます。
私のsettings.pyにも次のものがあります
どんな助けでも大歓迎です。森の中で少し失われました。
css - 圧縮された css ファイルの import ステートメントの使用方法
cssファイルを圧縮するためにdjango compressを使用しています。これらは私が「style」に与えた設定です: {
@import
cssを編集するたびにランダムに生成されるため、ステートメントを使用してそれを含めるにはどうすればよいですか。
django - 私の LESS @import パスはどうあるべきですか?
シナリオは次のとおりです。
Django 1.3.1 を実行し、staticfiles と django-compressor (最新の安定版) を使用して、とりわけ LESS ファイルをコンパイルしています。
STATICFILES_DIRS
(プロジェクト全体の静的リソース用に)静的ファイルにフックされた「資産」ディレクトリがあります。そのディレクトリには「css」ディレクトリがあり、その中に LESS 変数と mixin を含む「lib.less」ファイルがあります。
したがって、物理パスは<project_root>/assets/css/lib.less
であり、 で提供され/static/css/lib.less
ます。
アプリの静的ディレクトリの 1 つに、上記のファイルをインポートする必要がある別の LESS ファイルがあります。そのための物理パスは であり<project_root>/myapp/static/myapp/css/file.less
、 で提供され/static/myapp/css/file.less
ます。
私の最初の考えは:
(つまり、URL に基づいて、 から までのレベルに移動/static/myapp/css
し/static/
、次に までトラバースします/static/css/lib.less
)。
FilterError
ただし、それは機能しません。私が考えることができる URL と物理パスのほぼすべての組み合わせを試してみましたが、インポートするファイルを見つけることができなかったため、それらすべてがテンプレートで s を提供してくれました。
実際のインポートパスがどうあるべきか、誰にもアイデアがありますか?
django - マルチサーバー展開での Django Compressor
私は幸運にもdjango_compressorを発見し、それをスタック内に実装しました。これは多くのサーバーにデプロイされます (現在は 6 台ですが、より小さな仮想マシンをデプロイするにつれて成長しています)。
django_compressor を最高の状態で使用している場合、これはすべてうまくいきます。生の CSS/JS コードの圧縮
ただし、ここで、ある種のプリコンパイラを導入したいとします。この例では、LESS (css) としましょう。このための思考プロセスは非常に単純です。
node、npm、および less パッケージをサーバーにインストールします。
プリコンパイラへの追加を減らしましょう!
COMPRESS_PRECOMPILERS = (('text/less', 'lessc {infile} {outfile}'), )
これでデプロイすると、サーバーが less ファイルをコンパイルします。すべてが素晴らしいです!
これにさらに 8 つのサーバーを追加して、各サーバーに node、npm、および less をインストールする必要がありますか?
これは何かが正しくないように思われる場所であり、何かが欠けているように感じます. Django コミュニティは以前にもこの問題に遭遇したことがあると思います。
これまでの私の考えは次のとおりです。
post-commit フックを使用して、開発者のマシンで CSS をコンパイルします。これは、django_compressor を介して、HTML 内のコンパイル済み静的ファイルにリンクし、リポジトリにはコンパイル済みバージョンとコンパイル済みバージョンの両方が含まれていることを意味します。これに対する私の唯一の欠点は、django_compressor の利点の半分を使用しないことになり、開発者にとって退屈になる可能性があることです?
それを吸い上げて、ノード、npm、およびサーバースタックの一部を少なくします。
アップデート
さらに調べてみたところCOMPRESS_OFFLINE
、管理コマンドでフラグ (または単に --force) を使用すると、必要なことを実行するオフライン マニフェスト ファイルが生成されるようです (ローカルでのみテストされます)。そのため、デプロイ前のフックを使用してこれを設定することが答えになります。
もちろん、他のアイデアにもまだオープンです:-)
django - django-compressorでDjangoのテンプレート変数を使用する
問題は{{ STATIC_URL }}
、django-compressorが.jsファイルにコンパイルするcoffeescriptファイルで参照されたときに正しくロードされないことです。
私のdjangoテンプレートには、
stuff.coffee
私は持っています
次に、ブラウザでレンダリングされたHTMLは
{{ STATIC_URL }}
したがって、私の質問は、Djangoにcoffeescriptファイル内のを認識させるにはどうすればよいですか?助けてくれてありがとう!
django - Django と CoffeeScript を Heroku にデプロイする際の奇妙な問題
これは一種の複雑な質問なので、説明するには少し時間がかかります。私は直接的な答えを探しているわけではないので、アドバイスは良いでしょう。多くの CoffeeScript を使用する Django アプリがあります。プロジェクトで CoffeeScript をコンパイルするには、 app を使用していdjango-compressor
ます。使用するdjango-compressor
には、インストールする必要がありnmp
ます (ノード パッケージ マネージャー)。残念ながらnpm
Herokuにはインストールできません。したがって、CoffeeScript が Heroku サーバーに到達する前にコンパイルする必要があります。Fabric
それで、うまく機能しているように見えるセットアップでそれを行いました。
コンパイルされた CoffeeScript を静的ファイルとして取得できますが、実行時まで新しいテンプレートを再生成しない{% compress js %} *** {% endcompress %}
ため、テンプレートにはまだタグが含まれているため、問題は発生していません。django-compressor
したがって、アプリを Heroku にデプロイできるように、テンプレート タグを利用してアプリをデプロイする方法についてのアドバイスを探しています。私はそれが多くの部分を持つ質問であることを知っているので、どんなアドバイスでも非常に役に立ちます!
django - S3 上の圧縮ファイルが 403 Forbidden エラーを返すのはなぜですか?
S3 で圧縮ファイルを提供するために django-compressor と django-storages を使用しています (次の手順を使用します: http://django_compressor.readthedocs.org/en/latest/remote-storages/#using-staticfiles )。「圧縮」管理コマンドを実行した後、最初はうまく機能しますが、約 1 時間後に、ファイルに変更を加えていないにもかかわらず、圧縮された css および js ファイルが 403 Forbidden エラーを返します。問題を切り分けることができないようですので、何か助けていただければ幸いです。
私が使用している設定は次のとおりです。
更新: これは、COMPRESS_OFFLINE が True の場合にのみ問題になるようです。False に設定すると、最初のリクエストで作成された圧縮ファイルが正しく機能し、1 時間以上経過しています。ただし、管理コマンドを使用してこれらのファイルを事前に圧縮することをお勧めします。
django - django_compressorを使用してファイルをgzipに圧縮します
django_compressorを使用してjsファイルとcssファイルを圧縮します。結合されたファイルを正常に作成します。ただし、このアプリではファイルを圧縮することもできます。これを有効にするために私は作成しました
私のsettings.pyで。コンプレッサーの作業ディレクトリに、cssとjsのgzipファイルが追加されました。しかし、Firebugでhtmlをチェックした後、gzipファイルはレンダリングプロセス中ではないようです。どうすれば変更できますか?
django - apacheでdjango-compressorを使用する方法は?
私はDjangoCompressorを使用してコーヒー/レスファイルを管理しており、開発に最適ですが、本番環境での展開で機能させるためにいくつかの問題がありました。
私の考えは、おそらく別のサーバーで静的ファイルをホストするための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」がオフラインマニフェストにありません。「pythonmanage.pycompress」を実行する必要があるかもしれません。
ディレクトリをチェックするstatic/CACHE
と、エラーの内容を確認します。これが私のmanifest.json
ファイルです。
CACHEディレクトリを削除して再実行するpython manage.py compress
と、エラーメッセージとマニフェストファイルの両方に新しいIDのセットが表示されますが、エラーのIDがマニフェストに表示されません。
ですから、ここには2つの質問があると思います。なぜ機能しないのですか?これを達成するための適切な方法は何ですか?
ありがとう。