我的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' %}"
这也很有效,所以我的问题是,如果这是一个很好的做法,或者如果这有一些我将在未来面临的缺点。
答案 0 :(得分:0)
如果proyect是中等大小。我通常实现的是拥有一个单独的JavaScript文件。在导入文件之前,我从Django模板表达式生成所需的变量。
例如,绘制折线图。我的可变数据将具有所需的值。然后我会导入一个在变量顶部建立的脚本。
<script>var data = [{% for s in stats %}{{s}},{% endfor %}];</script>
<script src="{% static "myapp/js/line.js" %}"></script>