django:ImageField,MEDIA_ROOT,MEDIA_URL,如何正确设置

时间:2010-07-09 18:07:00

标签: django imagefield media-url

如何在MEDIA_ROOT的背景下正确设置MEDIA_URLImageField?我应该如何为ImageField设置upload_to参数? MEDIA_ROOTMEDIA_URL的评论很少,所以我想知道,它们用于什么以及如何正确设置它们。

1 个答案:

答案 0 :(得分:8)

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添加到此处以使其成为绝对路径。