使用Django modpython部署静态文件

时间:2012-06-05 16:50:52

标签: python django django-urls django-settings

我一直想知道服务器在使用Django时是如何找到静态文件的。最近我将我的Django应用程序部署到服务器,我在部署静态文件时遇到了麻烦。我总是得到如下错误:

Using the URLconf defined in cms.urls, Django tried these URL patterns, in this order:
^gre/
The current URL, static/, didn't match any of these.

当我要求我的css文件时,http://gnijuohz.com/static/css/bootstrap.css

SO 1)

我是否必须对我的urls.py执行某些操作才能找到我的css文件和js文件?

请注意,我没有服务器上的root权限,因此我无法使用Django提供的collectstatic命令。

我在我的setting.py中设置了STATIC_ROOT和STATIC_URL,以便STATIC_ROOT指向我的静态文件。

2)

我不清楚整个过程是如何运作的。当我请求我的css文件时,是否通过urls.py查看匹配?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

1

不,Django不应该在生产服务器上提供静态文件。 Apache(或您使用的任何服务器)应该提供静态文件,通常位于目录/ static /中。这就是collectstatic的作用:它收集了所有Django应用程序中的所有静态文件,并将它们放在STATIC_ROOT中,以便您的服务器可以提供文件。

通过调整urlpatterns中的urls.py,您可以在本地提供静态文件。

很遗憾你不能使用collectstatic,因为这就是使用Django的方式。

2

如上所述,这不是应该发生的事情。

现在,要回答您的问题,您可以在STATIC_ROOT中创建符号链接到您的静态文件所在的所有位置。所以是每个Django应用程序的每个静态目录的符号链接。