这是我的设置:
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" />
它一直有效,直到我做了另一个 View -:
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 的这个问题)
提前致谢:)
最佳答案
首先,以下内容不能解决您的问题,因为 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
命令时,这是放置静态文件的位置。参见 Managing static files在 Django 文档中。
关于python - Django 1.4 静态文件问题并且不在我项目的其他 url 上呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10042469/