Django如何处理`MEDIA_ROOT`?
Django中的MEDIA_ROOT
到底是干什么的?我一直搞不懂。因为Django本身不提供静态媒体文件的服务,你还得自己设置像apache这样的服务器,那它为什么要关心这些文件放在哪个目录呢?
3 个回答
2
当你创建一个包含 ImageField 或 FileField 属性的模型时,你需要传递一个 upload_to 参数。这个参数是一个相对路径,它会被加到你的 MEDIA_ROOT 路径后面,用来保存和获取这些文件。
2
看起来在Django的一些类中,它被用作默认设置。例如,FileSystemStorage 就是用它作为存储文件的默认位置。
10
你并不是唯一一个有这个疑问的人;可以看看Django的第10650号问题。根据那里的Django开发者的评论,我觉得这基本上总结了MEDIA_ROOT
的用途:
不幸的是,Django在文档中对
MEDIA_ROOT
和MEDIA_URL
的用途描述得太模糊了。通过查阅Django的代码可以确认,MEDIA_ROOT
和MEDIA_URL
是用来处理文件上传的,而MEDIA_URL
是通过默认的上下文处理器方便模板使用的(在使用RequestContext时可用)。