【问题标题】:Django: {{STATIC_URL}} tag not working when url path is extendedDjango:扩展 url 路径时 {{STATIC_URL}} 标签不起作用
【发布时间】:2013-01-30 21:55:26
【问题描述】:

我在模板中到处使用{{STATIC_URL}}(为简单起见,我们以主页为例)。所以,我有一个名为“home_base.html”的父模板,它在这样的情况下使用标签:

<script src="{{STATIC_URL}}js/plugins.js">
<img src={{STATIC_URL}}img/blah.jpg>

在我的 urls.py 文件中,我有两个 url,指向同一个视图

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 路径添加东西有关,因为如果我将我的 url 更改为如下所示,一切正常:

url(r'^home/$', 'homepage.views.HomeView'),
url(r'^x/$', 'homepage.views.HomeView', {'x': '3'}),

为什么当我在 url 中添加斜杠时一切都搞砸了?我该如何解决?我真的很想像这样在家里添加一些东西:url(r'^home/add/stuff/to/address/$',并且仍然让所有{{STATIC_URL}}标签工作。

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

【问题讨论】:

  • 你能显示 STATIC_URL 的定义吗?好像你使用了相对路径...
  • STATIC_URL = '/static/'

标签: python django url django-templates


【解决方案1】:

尝试用

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

【讨论】:

    【解决方案2】:

    你有没有查看https://docs.djangoproject.com/en/dev/howto/static-files/ 上面写的:

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

    和:

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

    【讨论】:

    • 我在从视图渲染模板时使用 RequestContext(这可以通过两个 url 都调用相同的视图,并且其中一个可以完美运行这一事实证明)。 TEMPLATE_CONTEXT_PROCESSORS 也很好。还有其他想法吗?
    猜你喜欢
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 2013-07-06
    相关资源
    最近更新 更多