Django1.3の静的ファイル処理の前後で混合して一致させています。元々、すべての静的ファイルはから提供MEDIA_URL
されていましたが、Django1.3ではstaticfilescontribパッケージとそれに関連するSTATIC_ROOT
設定が導入されましたSTATIC_URL
。django.views.static.serve
まだ設定していない新しいstaticfilesアプリを利用します。
Django 1.3を実行していると仮定すると、最初に、に「staticfiles」を追加する必要がありますINSTALLED_APPS
。次に、とを定義する必要がありSTATIC_ROOT
ますSTATIC_URL
。標準の場所は、「static」という名前のプロジェクトルートレベルのディレクトリです。
staticfilesテンプレートコンテキストプロセッサも追加する必要があります。
TEMPLATE_CONTEXT_PROCESSORS = (
...
'django.core.context_processors.static',
)
これにより、STATIC_URL
変数がテンプレートで使用できるようになるため、次のようなリソースを参照できます。{{ STATIC_URL }}css/style.css
すべての静的リソースは、「static」という名前のアプリレベルのディレクトリにも移動する必要があります。実際のプロジェクトルートレベルの「静的」ディレクトリが直接使用されることはありません。collectstatic
これは、管理コマンドが本番環境で使用するためにすべての静的リソースをダンプする場所です。
プロジェクト全体の静的リソース(特定のアプリに関連付けられていない)が必要な場合は、完全に別個のディレクトリが必要になります(つまり、MEDIA_ROOT
または STATIC_ROOT
と同じではありません)。私は「アセット」という名前のものを使用する傾向があります。STATICFILES_DIRS
次に、Djangoに、静的リソースもここで調べて、次の設定を行うように指示する必要があります。
STATICFILES_DIRS = (
os.path.join(os.path.dirname(__file__), 'assets'), # or whatever you named it
)
MEDIA_ROOT
/は、ユーザーのアップロードにのみ使用されるようになりました(たとえば、 sとsMEDIA_URL
を介して作成されたファイルなので、引き続き必要ですが、手動で保存することはありません。FileField
ImageField
本番環境に到達すると、WebサーバーはそれぞれMEDIA_ROOT
とSTATIC_ROOT
atMEDIA_URL
とSTATIC_URL
の両方にサービスを提供する必要があります。また、以下を実行する必要があります。
$ python manage.py collectstatic
Djangoにすべての静的ファイルをで指定されたディレクトリにコンパイルさせるにはSTATIC_ROOT
。