代码之家  ›  专栏  ›  技术社区  ›  gruszczy

django:imagefield,media_root,media_url,如何正确设置

  •  4
  • gruszczy  · 技术社区  · 15 年前

    该如何 MEDIA_ROOT MEDIA_URL 在以下情况下正确设置 ImageField ?我该怎么设置 upload_to ImageField的参数?评论 中间根 媒体网址 是稀缺的,所以我想知道,它们是用来做什么的,如何正确设置它们。

    1 回复  |  直到 15 年前
        1
  •  8
  •   eruciform    15 年前

    Media_根目录是您希望文件进入的目录,Media_URL需要是指向同一目录路径的URL。

    upload_to选项可以是该目录中的一个目录,因此upload_to=“foo”将进入media_根目录的“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_根目录中-您不需要返回/usr/whatever/something/foo/newname。 “。它已经为你把媒体扎根在那里了。

    更新:

    仅供参考,很高兴知道

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

    这就是如何从模型外部生成图像将进入的部分路径。您需要手动将媒体根目录预先设置为绝对路径。