Django无法加载静态文件

3 投票
3 回答
3239 浏览
提问于 2025-04-18 07:20

我有一个用Django做的网页,现在想给它加一些CSS样式(使用Twitter Bootstrap)。这是我第一次尝试。我仔细阅读了文档,并按照上面说的步骤操作,以确保Django开发服务器能正常工作。我正在使用调试模式(debug=True)和Django版本1.6.5。我的settings.py文件看起来是这样的:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static")
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
 )

我的文件放在/mysite/static/bootstrap/css这个文件夹里,而在我的template.html文件中,我写了这个:

{% load staticfiles %}
<link href="{% static "boostrap/css/bootstrap.css" %}" rel="stylesheet" media="screen">

可惜的是,什么都没有发生,开发服务器显示:

 "GET /static/boostrap/css/bootstrap.css HTTP/1.1" 500 59

这意味着它找不到这些文件。我甚至尝试过不设置STATIC_ROOT,改成这样:

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
    '/static/',
)

但是这样开发服务器又返回:

"GET /static/boostrap/css/bootstrap.css HTTP/1.1" 404 1682

任何帮助都非常感谢。

3 个回答

-2

我发现这个问题出现了很多次,每次都是通过把网址添加到 STATIC_URL 里来解决的,也就是这样做:

STATIC_URL = 'http://localhost:8000/static/'
1

你需要把静态文件放到你项目的应用文件夹里。

---> 如果你的项目名字是 myblog,你会在 myblog 文件夹里找到另一个同名的 myblog 文件夹,你需要把你的 static 文件夹放在这里。

---> 在 settings.py 文件里,你需要添加:

  STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'myblog/static'), )

在生产模式下,如果你收集静态文件,这些静态文件会被复制到根目录的静态文件夹里。

3

你做得很好,但这里的问题只是一个简单的拼写错误。

你的静态文件放在 bootstrap 文件夹里。

但是在你的 HTML 代码中,你写成了: {% static "boostrap/css/bootstrap.css" %}

这里少了一个T

下面的代码就能正常工作:

{% load staticfiles %}
<link href="{% static "bootstrap/css/bootstrap.css" %}" rel="stylesheet" media="screen">

撰写回答