Django:如何从模板使用的静态文件加载javascript

时间:2017-11-09 12:24:00

标签: javascript python html django

我遇到了问题:

addWorkout.html中的

{% extends "workout/base.html" %}
{% block footer %}
<script type="text/javascript" src="{% static js/addWorkout.js %}"></script>
{% endblock %}
base.html中的

{% load static %}
<!DOCTYPE html>
<html lang="en">
<body>

{% block content %}{% endblock %}

{% block footer %}{% endblock %}

</body>
</html>

这会产生错误:

Invalid block tag on line 49: 'static', expected 'endblock'. Did you forget to register or load this tag?

此错误源于 addWorkout.html 中脚本标记的src属性。显然,django不允许静态标记位于块标记内。

但是,如何使用static元素底部的script标记从body导入javascript?

编辑:

如果我将addWorkout.html更改为:

{% extends "workout/base.html" %}
{% load static %}
{% block footer %}
<script type="text/javascript" src="{% static js/addWorkout.js %}"></script>
{% endblock %}

我会收到以下错误:

enter image description here

2 个答案:

答案 0 :(得分:2)

子模板不会继承父项加载的标记库,您必须在addWorkout模板中明确加载static标记。请注意this is documented ...

答案 1 :(得分:0)

从扩展模板文件中删除静态标记后,我能够重现相同的错误,更改下面的代码并尝试一下

function onEdit(e){
    if (e.source.getActiveSheet()
       .getName() !== 'APP_ID' || e.range.columnStart != 1 || e.range.rowStart != 2) return;
    e.range.offset(0, 1)
        .setValue(typeof e.value == 'object' ? null : new Date());
  schedTrigger();
}

将addWorkout.html替换为上述代码