【问题标题】:Django {{ block.super }} not working in a particular caseDjango {{ block.super }} 在特定情况下不起作用
【发布时间】:2013-09-26 08:57:20
【问题描述】:

我正在尝试扩展包含此块的模板:

    {% block headerjs %}
    <script type="text/javascript" src="{{ STATIC_URL }}js/jquery-1.7.2.min.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}js/bootstrap.min.js"></script>
    <script type="text/javascript" src="{% url django.views.i18n.javascript_catalog %}"></script>
    {% endblock %}

为了扩展它,我使用{{ block.super }}

{% block headerjs %}
{{ block.super }}
<script type="text/javascript" src="{{ STATIC_URL }}js/formhandler.js"></script>
{% endblock %}

它不工作,{{ block.super }} 是空的。我注意到&lt;script type="text/javascript" src="{% url django.views.i18n.javascript_catalog %}"&gt;&lt;/script&gt; 是原因。当我不加载此脚本时,一切正常。有谁知道为什么?

【问题讨论】:

  • 如果你把它放在引号里怎么办:{% url "django.views.i18n.javascript_catalog" %}?
  • 你是从正确的基础模板扩展而来的吗?
  • 您的 javascript 目录 url 标签解析正确吗?例如,如果您渲染父模板,您会在 HTML 中看到什么?
  • 谢谢!这是@alecxe 指出的引号。奇怪的是,在我没有扩展模板而只是使用基础并且它在没有引号的情况下工作之前。无论如何,这足以将 {{ block.super}} 呈现为空吗?
  • 您的 settings.py 中的 TEMPLATE_DEBUG 值是否设置为 True?如果没有,有时它会在开发过程中抑制这类错误。

标签: javascript django django-templates


【解决方案1】:

从 Django 1.5 开始,您必须在 {% url %} 模板标签中在视图名称周围加上引号。否则,它现在将被视为上下文变量(因此它将搜索变量 django 如果存在并获取其属性 views 等等......)。
正如 cmets 所指出的,正确的版本是:

<script type="text/javascript" src="{% url 'django.views.i18n.javascript_catalog' %}"></script>

也许它以前可以工作,因为您使用的是 Django

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多