我一直想知道服务器在使用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查看匹配?
感谢您的帮助!
答案 0 :(得分:1)
1
不,Django不应该在生产服务器上提供静态文件。 Apache(或您使用的任何服务器)应该提供静态文件,通常位于目录/ static /中。这就是collectstatic
的作用:它收集了所有Django应用程序中的所有静态文件,并将它们放在STATIC_ROOT
中,以便您的服务器可以提供文件。
通过调整urlpatterns
中的urls.py
,您可以在本地提供静态文件。
很遗憾你不能使用collectstatic
,因为这就是使用Django的方式。
2
如上所述,这不是应该发生的事情。
现在,要回答您的问题,您可以在STATIC_ROOT
中创建符号链接到您的静态文件所在的所有位置。所以是每个Django应用程序的每个静态目录的符号链接。