2011-09-17 13 views
19

私はdjangoの静的ファイルとメディアファイルについて混乱しています。私は他の人がそれを交換可能に使用するのを見てきました。django - media_rootまたはstatic_rootをいつ使うべきですか?

いつmedia_rootを使用し、static_rootを使用する必要がありますか?

私はサイトイメージを持っていればいいですか?そして私が製品イメージを持っていればメディアに入れますか?

答えて

28

MEDIA_ROOTは、ファイルのアップロードが配置されるディレクトリであり、通常は生成されるファイルが格納される場所です。たとえば、私のDjangoアプリケーションの1つで、ユーザーは画像をアップロードできます。モデルクラスの1つでは、sorl-thumbnailImageFieldタイプをupload_to='%Y-%m'としています。ユーザーが画像をアップロードするたびに、ファイルはMEDIA_ROOT/%Y-%m/に保存されます(%Yは現在の年に置き換えられ、%mは現在の月の数字に置き換えられます)。また、sorl-thumbnailがアップロードされた画像のサムネイルを生成すると、サムネイルby defaultMEDIA_ROOT/cache/のどこかに配置されます。

STATIC_ROOTは、静的資産が配置されるディレクトリを構成するために使用されます。たとえば、サイトスタイルシート、JavaScriptファイル、およびWebページのデザインで使用される画像は、STATIC_ROOTに入るファイルの種類です。複数のアプリケーションがインストールされている場合、静的ファイルを使用する各アプリケーションは独自の静的ファイルディレクトリを持つことができます。 collectstatic管理機能(python manage.py collectstaticから呼び出されます)を使用して、すべてのアプリの静的ファイルをSTATIC_ROOTにコピーします。

+0

返信いただきありがとうございます。もう1つのフォローアップの質問。製品イメージがあればどうなりますか?どこに行かなければならないのですか?管理者はアップロードすることができ、サイトに表示する必要があります。 –

+0

@ bash-:製品イメージのパスをデータベースに保存していますか? ['ImageField'](https://docs.djangoproject.com/ja/dev/ref/models/fields/#imagefield)と[' FileField'](https://docs.djangoproject.com/ja)のファイル/ dev/ref/models/fields /#filefield)は 'MEDIA_ROOT'に入っています。この場合yes、製品イメージは' MEDIA_ROOT'に入っています(ただし、 'MEDIA_ROOT'に手作業でアップロードする必要はありません。アプリはそれを行う必要があります)。手動で製品イメージを管理し、テンプレートの ''タグで参照する場合、製品イメージは 'STATIC_ROOT'に移動する必要があります。 –

関連する問題