Djangoでは、アプリ固有の静的ファイル(css、jsなど)をすべて、次のフォルダに配置するのが慣例です。静的したがって、構造は次のようになります。
mysite/
manage.py
mysite/ --> (settings.py, etc)
myapp/ --> (models.py, views.py, etc)
static/
私はmysite/settings.py
持っています:
STATIC_ROOT = 'staticfiles'
それで、次のコマンドを実行します:
python manage.py collectstatic
staticfiles
ルートレベル(つまり と同じディレクトリmyapp/
)にというフォルダを作成します。
これの目的は何ですか? すべての静的ファイルのコピーを作成するだけではないのですか?
ベストアンサー1
複数のアプリから静的ファイルを単一のパスに収集する
まあ、1つのDjangoプロジェクト複数使用する場合があるアプリ、つまり は 1 つしかありませんが、実際には、、 などmyapp
である可能性があります。myapp1
myapp2
個々のアプリ内から 1 つのフォルダーにコピーすることでSTATIC_ROOT
、複数のパスから静的ファイルを提供するように Web サーバーを構成するのではなく、フロントエンド Web サーバー (例: nginx) をその 1 つのフォルダーにポイントし、単一の場所から静的ファイルを提供することができます。
永続的なURLマニフェスト静的ファイルストレージ
バージョン管理のためにファイル名に追加される MD5 ハッシュに関する注意: これは のデフォルトの動作の一部ではありませんcollectstatic
。 はsettings.STATICFILES_STORAGE
デフォルトで になっていますStaticFilesStorage
(これは実行されません)。
たとえば、 を使用するように設定すると、MD5 ハッシュが有効になりManifestStaticFilesStorage
、その動作が追加されます。
このストレージの目的は、一部のページがまだ古いファイルを参照している場合(たとえば、ユーザーまたはサードパーティのプロキシ サーバーによってキャッシュされている場合)に、古いファイルを提供し続けることです。さらに、デプロイされたファイルに遠い将来の Expires ヘッダーを適用して、後続のページ アクセスの読み込み時間を短縮する場合にも非常に役立ちます。