MEDIA_ROOT
在 的上下文中应该如何MEDIA_URL
正确设置ImageField
?upload_to
我应该如何为 ImageField设置参数?MEDIA_ROOT
和的评论MEDIA_URL
很少,所以我想知道它们的用途以及如何正确设置它们。
问问题
4097 次
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 回答