Django -- 无法加载静态CSS文件

56 投票
21 回答
101775 浏览
提问于 2025-04-17 03:13

我在本地电脑上(Mac OS X)运行Django的开发服务器(runserver),但是CSS文件加载不出来。

这是我在settings.py文件里相关的设置:

STATIC_ROOT = '/Users/username/Projects/mysite/static/'

STATIC_URL = '/static/'

STATICFILES_DIRS = (
'/Users/thaymore/Projects/mysite/cal/static',
)

STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#'django.contrib.staticfiles.finders.DefaultStorageFinder',
)

INSTALLED_APPS = (
# other apps ...
'django.contrib.staticfiles',
)

在我的views.py文件中,我请求了上下文:

return render_to_response("cal/main.html",dict(entries=entries),context_instance=RequestContext(request))

在我的模板中,{{ STATIC_URL }}正确显示了:

<link type="text/css" href="{{ STATIC_URL }}css/main.css" />

变成了:

<link type="text/css" href="/static/css/main.css"/>

这就是文件实际所在的位置。我还运行了collectstatic命令,以确保所有文件都被收集到了。

我在urls.py文件中也有以下几行代码:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns += staticfiles_urlpatterns()

我对Django还很陌生,可能漏掉了什么简单的东西——希望能得到一些帮助。

21 个回答

8

还有一个简单的方法可以尝试,就是先停止服务器,然后再重新启动,比如:

$ python manage.py runserver

我看了其他的回答,但对我来说,重启服务器有效。

37

对于最近版本的Django,你需要在 settings.py 文件中配置静态文件,具体方法是:

STATIC_URL = '/static/' # the path in url

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

然后在模板中使用静态标签来引用这些文件,具体用法是:

{% load static %}
<link rel="stylesheet" href="{% static 'css/bootstrap.css' %}">
93

仔细阅读以下内容:

你在 settings.py 文件的 INSTALLED_APPS 中是否包含了 django.contrib.staticfiles

你的 DEBUG 设置是否为 False?如果是这样,你需要在运行 runserver 时加上 --insecure 参数:

python manage.py runserver --insecure

collectstatic 命令与通过开发服务器提供文件没有关系。它的作用是把静态文件收集到一个地方,方便你的网页服务器找到它们。实际上,如果你的 STATIC_ROOT 设置为 STATICFILES_DIRS 中的某个路径,然后再运行 collectstatic 是不太好的做法。你应该再检查一下,确保你的 CSS 文件现在确实存在。

撰写回答