【发布时间】:2017-05-02 10:03:13
【问题描述】:
Django 1.11
文档显示我们应该将图像放置到 /var/www//媒体/
https://docs.djangoproject.com/en/1.11/ref/settings/#media-root
但在《Two Scoops of Django》一书中,他们推荐:
# Configuring MEDIA_ROOT
# ’DONT DO THIS! Hardcoded to just one user's preferences
MEDIA_ROOT = "/Users/pydanny/twoscoops_project/media"
然后建议他们的方式:
root = lambda *dirs: join(abspath(BASE_DIR), *dirs)
# Configuring MEDIA_ROOT
MEDIA_ROOT = root("media")
你接受 Django 的两勺推荐的方式吗? 在这种情况下,MEDIA_ROOT 将位于项目本身内。这很糟糕,我想。这在某种程度上是代码和用户数据的混合体。
所以,我喜欢 Django 文档的建议:只需硬编码 /var/www/example.com/media/ 的路径。
MEDIA_ROOT 甚至不是 STATIC_ROOT。静态文件是从项目内部收集的。它们包含或多或少(CSS)代码的东西。而用户上传的文件肯定是数据,而不是代码。
你能评论一下吗?你的 MEDIA_ROOT 是什么样的? 我应该为我的本地机器和生产服务器使用不同的 MEDIA_ROOTS 吗?
【问题讨论】:
-
我更喜欢使用硬编码。因此我有两个不同的settings.py;一台用于生产,一台用于开发机器。我必须注意,这不仅适用于媒体根设置,而且我还在 dev 和 prod 中以不同的方式使用其他设置。
-
适合团队吗?您有一台用于生产的服务器。硬编码的内容并不可怕:它非常适合这个服务器。但是你的队友在他们自己的机器上工作。
-
如果您不将开发 settings.py 添加到版本控制系统中。他们都可以拥有自己的开发 settings.py,因此将其用于团队并不难。
-
您的 media_root 是否指向 var/www/
?我的意思是“www”具有以下权限: drwxr-xr-x 5 root root 。这在某种程度上可能不是很方便。如果在 www 中创建目录,则必须允许 django 进程在其中写入。 -
不,它不包含
所以它不在我的项目文件夹下它也不会打扰版本控制系统。我也不将我的项目保存在 /var/www/ 下,我通常使用我在服务器上创建的其他路径。
标签: django