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

Jor*_*ota 5 javascript django django-templates

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

    {% 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 %}
Run Code Online (Sandbox Code Playgroud)

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

{% block headerjs %}
{{ block.super }}
<script type="text/javascript" src="{{ STATIC_URL }}js/formhandler.js"></script>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

它不起作用,{{ block.super }} 是空的。我注意到这<script type="text/javascript" src="{% url django.views.i18n.javascript_catalog %}"></script>就是原因。当我不加载这个脚本时,一切正常。有谁知道为什么?

Max*_*ant 1

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

<script type="text/javascript" src="{% url 'django.views.i18n.javascript_catalog' %}"></script>
Run Code Online (Sandbox Code Playgroud)

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