Django:{{STATIC_URL}}标记在扩展url路径时不起作用

时间:2013-01-30 21:55:27

标签: python django url django-templates

我在我的模板中使用{{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}}代码生效。

请记住,我使用此父模板作为许多其他模板的基础,因此我可以添加到网址的路径,并将{{STATIC_URL}}标记保留在home_base中对我很重要.html文件。

2 个答案:

答案 0 :(得分:0)

尝试使用

转义字符串变量
{{STATIC_URL|safe}}

答案 1 :(得分:0)

您是否检查了https://docs.djangoproject.com/en/dev/howto/static-files/所说的内容:

  

如果{{STATIC_URL}}在模板中不起作用,则在渲染模板时可能没有使用RequestContext。

  

确保'django.core.context_processors.static'在您的TEMPLATE_CONTEXT_PROCESSORS中。