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を介して作成されたファイルなので、引き続き必要ですが、手動で保存することはありません。FileFieldImageField
本番環境に到達すると、WebサーバーはそれぞれMEDIA_ROOTとSTATIC_ROOTatMEDIA_URLとSTATIC_URLの両方にサービスを提供する必要があります。また、以下を実行する必要があります。
$ python manage.py collectstatic
Djangoにすべての静的ファイルをで指定されたディレクトリにコンパイルさせるにはSTATIC_ROOT。