Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 媒体根目录:我应该硬编码路径还是使用os.path.join?_Django - Fatal编程技术网

Django 媒体根目录:我应该硬编码路径还是使用os.path.join?

Django 媒体根目录:我应该硬编码路径还是使用os.path.join?,django,Django,Django 1.11 文档显示,我们应该将图像放置到 /var/www//media/ 但在《两勺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

Django 1.11

文档显示,我们应该将图像放置到 /var/www//media/

但在《两勺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/的路径

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

你能评论一下吗?你的媒体根是什么样子的?
我应该为我的本地机器和生产服务使用不同的介质吗?

我曾经使用过以下方法:

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

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

我曾经使用过以下方法:

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


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

我更喜欢使用硬编码。因此,我有两个不同的设置。py;一个用于生产,一个用于开发机器。我必须注意的是,这不仅适用于媒体根目录设置,而且我在dev和prod中使用其他不同的设置。它适合团队吗?您有一台用于生产的服务器。而硬编码的东西并没有那么可怕:它非常适合这个服务器。但你们的队友在他们自己的机器上工作。只要你们不把你们的development settings.py添加到版本控制系统中。他们都可以有自己的开发设置.py,所以团队采用它并不困难。您的媒体根指向var/www/吗?我的意思是“www”具有以下权限:drwxr-xr-x 5 root。这可能不太方便。如果在www内创建目录,则必须允许django进程在其中写入。不,它不包含,因此不在我的项目文件夹下。我通常更喜欢在媒体根目录的上方创建一个文件夹,因为这通常也是我填充virtualenv文件的地方,这样,它也不会影响版本控制系统。我也不把我的项目放在/var/www/下,我通常使用我在服务器上创建的其他路径。我更喜欢使用硬编码。因此,我有两个不同的设置。py;一个用于生产,一个用于开发机器。我必须注意的是,这不仅适用于媒体根目录设置,而且我在dev和prod中使用其他不同的设置。它适合团队吗?您有一台用于生产的服务器。而硬编码的东西并没有那么可怕:它非常适合这个服务器。但你们的队友在他们自己的机器上工作。只要你们不把你们的development settings.py添加到版本控制系统中。他们都可以有自己的开发设置.py,所以团队采用它并不困难。您的媒体根指向var/www/吗?我的意思是“www”具有以下权限:drwxr-xr-x 5 root。这可能不太方便。如果在www内创建目录,则必须允许django进程在其中写入。不,它不包含,因此不在我的项目文件夹下。我通常更喜欢在媒体根目录的上方创建一个文件夹,因为这通常也是我填充virtualenv文件的地方,这样,它也不会影响版本控制系统。我也没有将我的项目保存在/var/www/下,我通常使用我在服务器上创建的其他路径。在项目内部?我的意思是,为什么它在项目中而不是在var/www中?是的,您可以创建.env文件并将您的媒体根目录设置为您想要的任何位置。创建.env文件不是一种惯例,而是一种有效的方法,这样我们可以在单个文件中进行更改。为什么将上载的文件保留在项目中?它有益吗?根据django文档,它给出了一个绝对路径的示例:没有关于首选项或有益部分的内容。这不仅仅是绝对路径的一个例子。该文档介绍了最佳实践。在讨论Django文档的改进时经常提到它。在项目内部?我的意思是,为什么它在项目中而不是在var/www中?是的,您可以创建.env文件并将您的媒体根目录设置为您想要的任何位置。创建.env文件不是一种惯例,而是一种有效的方法,这样我们可以在单个文件中进行更改。为什么将上载的文件保留在项目中?它有益吗?根据django文档,它给出了一个绝对路径的示例:没有关于首选项或有益部分的内容。这不仅仅是绝对路径的一个例子。该文档介绍了最佳实践。在讨论Django文档的改进时,经常提到它。