django模板语法与javascript代码混合

时间:2017-12-13 16:18:41

标签: javascript jquery django templates

我的js代码在块内的.html django模板中,这样:

{% extends 'base.html' %}
... some blocks here ...
{% block javascript %}
<script>
    $(document).ready(function () {
    ...
    });
</script>
{% endblock %}

现在我需要在js代码中使用从视图传递到模板的一些上下文变量。我使用了一个选项,我使用django模板语法{{...}}

在html元素中声明了数据attr
<div id="order_id" data-order-id={{order.id}}>

并且使用jq我得到了这个元素并读取了数据值。这样:

var orderId = $("#order_id").data('order-id')

这工作得相当好,但我意识到如果我有相同的代码.html我可以使用django模板表达式作为我的js代码的一部分。这样:

var orderId = {{ order.id }};
var changeStatusUrl = "{% url 'orders:change_status' %}"

这也很有效,所以我的问题是,如果这是一个很好的做法,或者如果这有一些我将在未来面临的缺点。

1 个答案:

答案 0 :(得分:0)

如果proyect是中等大小。我通常实现的是拥有一个单独的JavaScript文件。在导入文件之前,我从Django模板表达式生成所需的变量。

例如,绘制折线图。我的可变数据将具有所需的值。然后我会导入一个在变量顶部建立的脚本。

<script>var data = [{% for s in stats %}{{s}},{% endfor %}];</script>
<script src="{% static "myapp/js/line.js" %}"></script>