0

我一直想知道使用 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

所以 1)

我是否必须对我的 urls.py 做一些事情才能找到我的 css 文件和 js 文件?

注意我在服务器上没有root权限,所以不能使用Django提供的collectstatic命令。

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

2)

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

谢谢你的帮助!

4

1 回答 1

1

1.

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

在本地,您可以通过调整urlpatternsin来提供静态文件urls.py

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

2.

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

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

于 2012-06-05T17:28:44.537 回答