Django: {{STATIC_URL}} 标签在扩展网址路径时不工作
我在我的模板里到处使用 {{STATIC_URL}}
(为了简单起见,我们以首页为例)。我有一个叫做 "home_base.html" 的父模板,在这种情况下使用这个标签:
<script src="{{STATIC_URL}}js/plugins.js">
<img src={{STATIC_URL}}img/blah.jpg>
在我的 urls.py 文件里,我有两个网址,它们指向同一个视图:
url(r'^home/$', 'homepage.views.HomeView'),
url(r'^home/x/$', 'homepage.views.HomeView', {'x': '3'}),
当我访问 mysite.com/home 时,一切都正常。但是,当我访问 mysite.com/home/x 时,应用的静态文件夹里的文件找不到了。我收到的错误信息是这样的,每个静态文件在模板中都会出现:
[30/Jan/2013 13:04:20] "GET /homepage/static/js/plugins_functions.js HTTP/1.1" 404 7325
[30/Jan/2013 13:04:20] "GET /homepage/static/js/backb_global.js HTTP/1.1" 404 7310
看起来它在开头加上了 /homepage/
...通常应该是 /static/js...
我发现这和在网址路径中添加东西有关,因为如果我把网址改成这样,一切就正常了:
url(r'^home/$', 'homepage.views.HomeView'),
url(r'^x/$', 'homepage.views.HomeView', {'x': '3'}),
为什么当我在网址中添加斜杠时,一切都会搞乱?我该怎么解决这个问题?我真的希望能像这样添加东西到首页:url(r'^home/add/stuff/to/address/$'
,同时让所有的 {{STATIC_URL}}
标签都能正常工作。
请记住,我使用这个父模板作为许多其他模板的基础,所以我需要能够在网址路径中添加内容,同时保持 home_base.html 文件中的 {{STATIC_URL}}
标签。
2 个回答
0
你有没有查看过这个链接 https://docs.djangoproject.com/en/dev/howto/static-files/,里面提到:
如果在你的模板中 {{ STATIC_URL }} 不起作用,那可能是因为你在渲染模板时没有使用 RequestContext。
还有:
确保 'django.core.context_processors.static' 在你的 TEMPLATE_CONTEXT_PROCESSORS 中。
0
试着用下面的方式来处理字符串变量:
{{STATIC_URL|safe}}