2011-02-16 23 views
53

私はDjango 1.3に移行しており、このメディアと静的ファイルの分離がちょっと混乱しています。ここではデフォルトsettings.pyがどのように見えるかです:Djangoの静的ファイルとメディアファイルの違いは何ですか?

# Absolute filesystem path to the directory that will hold user-uploaded files. 
# Example: "/home/media/media.lawrence.com/media/" 
MEDIA_ROOT = '' 

# URL that handles the media served from MEDIA_ROOT. Make sure to use a 
# trailing slash if there is a path component (optional in other cases). 
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/" 
MEDIA_URL = '' 

# Absolute path to the directory that holds static files. 
# Example: "/home/media/media.lawrence.com/static/" 
STATIC_ROOT = '' 

# URL that handles the static files served from STATIC_ROOT. 
# Example: "http://media.lawrence.com/static/" 
STATIC_URL = '/static/' 

私はMEDIA_ROOTSTATIC_ROOTに何を入れるべきですか?それらは別々のディレクトリであるべきですか?違いはなんですか?

+0

こちらの記事を参照してくださいhttps://groups.google.com/forum/#!topic/django-users/tSb4EC0G040 – laike9m

答えて

49

スタティックファイルはjavascript/imagesなどで使用されますが、メディアファイルはユーザーがアップロードしたコンテンツ用です。

+0

メディアにアプリを保存するアプリについてはどうでしょうか?たとえばcontrib.adminなどです。私は今私のプロジェクトのメディアフォルダや静的フォルダにシンボリックリンクする必要がありますか?なぜならあなたの答えによれば、それらのファイルは現在静的に属しているからです。 – darren

+0

@mongoose_za - 管理アプリケーションに静的フォルダが作成され、メディアが使用されなくなりました。 staticfilesアプリケーションを使用している場合、adminのメディアファイルをシンボリックリンクする必要はなくなりました。 –

29

Uku Loskit氏によると、静的ファイルは、アプリケーションのCSSファイル、javascriptファイル、画像などのためのものです。メディアファイルは通常、ユーザーまたは管理者がアップロードできるファイルです。

通常、MEDIA_ROOTSTATIC_ROOTは別々のディレクトリにする必要があります。 STATIC_ROOTは、管理コマンドcollectstaticが検出したすべての静的ファイルを配置する場所です。プロダクションでは、STATIC_URLで始まるリクエストが与えられたときに、STATIC_ROOTのファイルを提供するようにWebサーバーを設定します。 Django devserverを開発用に使用している場合、自動的に静的ファイルが提供されます。

したがって、staticfilesアプリケーションは、ユーザーがアップロードしたメディアをアプリケーションメディアから外し、展開、バックアップ、およびバージョン管理を容易にします。 staticfilesアプリケーションの前には、開発者がメディアファイルを静的アプリケーション資産と混在させるのが一般的でした。

staticfilesの1.3ドキュメントは着実に改善されています。詳細はhow-toをご覧ください。

関連する問題