3

这是我的设置:

STATIC_ROOT = "/home/tony/Documents/mysite/mysite/"

STATIC_URL = '/static/'

STATICFILES_DIRS = (
"/home/tony/Documents/mysite/mysite/static/",
)

在这里我参考了我的样式表(这给了我一个错误):

<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}/css/reset.css" />
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}/css/style.css" />

以及日志中的错误:

[06/Apr/2012 13:36:09] "GET /css/reset.css HTTP/1.1" 404 2193
[06/Apr/2012 13:36:09] "GET /css/style.css HTTP/1.1" 404 2193

我认为我如何解决它:

<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}static/css/reset.css" />
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}static/css/style.css" />    

它一直有效,直到我提出另一个观点 - :

from django.shortcuts import render_to_response
from django.template import RequestContext

def test(request):
    return render_to_response('test.html')

在模板中我添加了 {% extends 'base/base.html' %} 我在日志中得到了什么?这:

[06/Apr/2012 13:46:55] "GET /test/ HTTP/1.1" 200 964
[06/Apr/2012 13:46:55] "GET /test/static/css/style.css HTTP/1.1" 404 2229
[06/Apr/2012 13:46:55] "GET /test/static/css/reset.css HTTP/1.1" 404 2229

注意 /test/? 它不加载css。
知道为什么吗?(​​我从来没有遇到过 django1.3 的这个问题)

提前致谢 :)

4

2 回答 2

4

首先,以下内容不能解决您的问题,因为STATIC_URL应该包含/static/,您不想自己在任何地方编写它:

"{{ STATIC_URL }}static/css/reset.css"

现在,如果您{{ STATIC_URL }}的模板中有但/static/没有显示在模板中,那么我认为您缺少STATIC_URL.

添加'django.core.context_processors.static'到您的TEMPLATE_CONTEXT_PROCESSORS设置中。例如,像这样:

TEMPLATE_CONTEXT_PROCESSORS = (
   'django.core.context_processors.static',
)

如果TEMPLATE_CONTEXT_PROCESSORS已经在您的设置文件中,那么您应该将其添加到已经存在的文件中。

另外,请注意STATIC_URL以斜杠结尾,因此您需要在{{ STATIC_URL }}此处删除第一个斜杠:

<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}/css/reset.css" />

最后,你STATIC_ROOT很可能不是你想要的。它应该是:

"/home/tony/Documents/mysite/mysite/static/"

collectstatic这是运行命令时放置静态文件的位置。请参阅Django 文档中的管理静态文件

于 2012-04-06T11:14:57.577 回答
2

您没有使用RequestContext来呈现您的模板,因此上下文处理器没有运行,因此STATIC_URL是空的。

于 2012-04-06T11:44:36.013 回答