Django {{ block.super }} 在特定情况下不起作用

Django {{ block.super }} not working in a particular case

本文关键字:在特定情况下 不起作用 super block Django      更新时间:2023-09-26

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

    {% 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 }} 是空的。我注意到<script type="text/javascript" src="{% url django.views.i18n.javascript_catalog %}"></script>是原因。当我不加载此脚本时,一切正常。有谁知道为什么?

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

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

也许它以前可以工作,因为你使用的是 Django <= 1.4。