Django如何处理`MEDIA_ROOT`?

9 投票
3 回答
4232 浏览
提问于 2025-04-15 19:31

Django中的MEDIA_ROOT到底是干什么的?我一直搞不懂。因为Django本身不提供静态媒体文件的服务,你还得自己设置像apache这样的服务器,那它为什么要关心这些文件放在哪个目录呢?

3 个回答

2

当你创建一个包含 ImageField 或 FileField 属性的模型时,你需要传递一个 upload_to 参数。这个参数是一个相对路径,它会被加到你的 MEDIA_ROOT 路径后面,用来保存和获取这些文件。

2

看起来在Django的一些类中,它被用作默认设置。例如,FileSystemStorage 就是用它作为存储文件的默认位置。

10

你并不是唯一一个有这个疑问的人;可以看看Django的第10650号问题。根据那里的Django开发者的评论,我觉得这基本上总结了MEDIA_ROOT的用途:

不幸的是,Django在文档中对MEDIA_ROOTMEDIA_URL的用途描述得太模糊了。通过查阅Django的代码可以确认,MEDIA_ROOTMEDIA_URL是用来处理文件上传的,而MEDIA_URL是通过默认的上下文处理器方便模板使用的(在使用RequestContext时可用)。

撰写回答