4

のコンテキストでどのように正しく設定する必要がMEDIA_ROOTありますか? ImageField のパラメータはどのように設定すればよいですか? とのコメントが少ないので、何に使うのか、正しく設定する方法を知りたいです。MEDIA_URLImageFieldupload_toMEDIA_ROOTMEDIA_URL

4

1 に答える 1

10

MEDIA_ROOTは、ファイルを配置するディレクトリです。MEDIA_URLは、同じディレクトリパスにつながるURLである必要があります。

upload_toオプションは、そのディレクトリ内のディレクトリにすることができるため、upload_to="foo"はMEDIA_ROOTの"foo"サブディレクトリに移動します。

または、画像フィールドインスタンスと提案されたベースファイル名を取得し、使用する実際のファイル名を返す関数にすることもできます。それで

upload_to=get_photo_path 

と:

def get_photo_path(instance, filename):
  if not filename: return ""
  exts = re.search('[.]([^.]*)$',filename)
  if exts is None:
    ext  = ''
  else: 
    ext = '.'+exts.group(1)
  return "newname%s" % (ext)

ファイルの名前を変更しますが、拡張子は保持します。「newname。」は引き続きMEDIA_ROOTディレクトリにあることに注意してください。「/usr/ whatever / something / foo/newname。」を返す必要はありません。それはすでにあなたのためにそこにMEDIA_ROOTをタックします。

アップデート:

参考までに、知っておくといいです

<modelobject>.<imagefieldname>.field.generate_filename( <modelobject>, proposed_name )

これは、モデルの外部から、画像が入る部分的なパスを生成する方法です。絶対パスにするには、これの前にMEDIA_ROOTを手動で追加する必要があります。

于 2010-07-09T18:14:07.033 に答える