Django: {{STATIC_URL}} 标签在扩展网址路径时不工作

0 投票
2 回答
743 浏览
提问于 2025-04-17 14:15

我在我的模板里到处使用 {{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}}

撰写回答