在Django中可以配置静态文件服务位置吗?

时间:2009-09-14 22:09:56

标签: django

我正在计算机上使用Django进行开发,所有静态文件的位置与我的主机上的位置不同。有没有办法使这个可配置参数?

例如,在我的计算机上,我必须在我的模板中包含jquery.js,它位于/includes/jquery.js中,但在我的主机上,它位于../static/jquery.js,但是我不想为每个模板页面进行所有这些更改。

3 个答案:

答案 0 :(得分:3)

这里有两个问题。第一个是如何配置Django找到静态文件的位置,以及链接到/包含静态资源时使用的URL前缀。 问题的答案是使用MEDIA_URLMEDIA_ROOT设置来控制静态媒体的URL映射和磁盘路径信息。有关该任务的更多信息,请参阅Django setting reference docs

然后,您的第二个隐含问题是如何为本地开发环境和生产部署维护不同的设置。有许多不同的“配方”用于维护Django项目的多个并行配置环境,但我发现最简单的方法就是将这样的内容添加到settings.py的底部:

try:
  from settings_local.py import *
except ImportError:
  pass

然后,如果任一系统(dev或production)在根项目目录中有一个名为settings_local.py的文件,那么在那里设置的配置选项将覆盖在主settings.py中创建的那些文件。然后我通常将本地文件添加到我的版本控制的忽略列表中,并将依赖于机器或安全性的数据(如数据库密码)放入其中,而大部分配置可以存在于主版本控制的{{ 1}}。

答案 1 :(得分:0)

嗯,Django配置文件是python脚本,所以你有很好的保真度。例如,您可能希望为每个主机创建位置列表,并在配置文件中读取它们。

答案 2 :(得分:0)

请参阅the djangodose article on configuring development and production environments,特别是the fourth comment。给出的说明专门解决了保留VCS中所有设置的问题 - 但是,如果我正在更改具有此可配置位置的文件,该怎么办?我不想把它放在我的忽略列表上。