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

标签 django imagefield media-url

应该怎么做MEDIA_ROOTMEDIA_URLImageField 的上下文中正确设置?我应该如何设置 upload_to ImageField 的参数?评论 MEDIA_ROOTMEDIA_URL稀缺,所以我想知道,它们用于什么以及如何正确设置它们。

最佳答案

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)

将重命名文件但保留扩展名。注意“新名”。仍会在 MEDIA_ROOT 目录中 - 您不需要返回“/usr/whatever/something/foo/newname.”。它已经为您添加了 MEDIA_ROOT 。

更新:

仅供引用,很高兴知道
<modelobject>.<imagefieldname>.field.generate_filename( <modelobject>, proposed_name )

这就是您如何从模型外部生成图像将进入的部分路径。您需要手动添加 MEDIA_ROOT 以使其成为绝对路径。

关于django: ImageField, MEDIA_ROOT, MEDIA_URL, 如何正确设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3215345/

相关文章:

python - Django ~ WSGIRequest 通过 get_context_data 方法添加表单

django - 可疑文件操作: Storage can not find an available filename for

sql-server - 如何提高带有图像字段的 SQL Server 表的性能?

python - 如何在 DRF 中获取图像的完整 url?

python - Django:MEDIA_URL 返回找不到页面

Django:如何在中间件中访问session_key

python - 链接到django cms中的页面,首先检查是否存在

python - 在 Django Admin 中可视化上传的图像

python - Django 1.6 图片上传和媒体路径

javascript - HTML 上的 Django 导航文本