MEDIA_ROOT:我应该硬编码路径还是使用os.path.join?

时间:2017-05-02 10:03:13

标签: django

Django 1.11

文档显示我们应该将图像放置到 /无功/网络//媒体/

https://docs.djangoproject.com/en/1.11/ref/settings/#media-root

但在书中" 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推荐的Two Scoops的方式吗? 在这种情况下,MEDIA_ROOT将在项目内部。我想这很糟糕。这在某种程度上是代码和用户数据的混合。

所以,我喜欢Django的文档建议:只需硬编码到/var/www/example.com/media /的路径。

MEDIA_ROOT甚至不是STATIC_ROOT。从项目内部收集静态文件。它们包含或多或少(CSS)代码的东西。而用户上传的文件肯定是数据,而不是代码。

你能发表评论吗?你的MEDIA_ROOT是什么样的? 我可以为本地机器和生产服务器使用不同的MEDIA_ROOTS吗?

1 个答案:

答案 0 :(得分:0)

我曾经使用过以下内容:

ENV_PATH = os.path.abspath(os.path.dirname(__file__))
MEDIA_ROOT = os.path.join(ENV_PATH, 'media/')

这将自动检测settings.py文件的绝对路径并创建media_root路径。