我的JS代码在块内的.html django模板中,这样:
{% extends 'base.html' %}
... some blocks here ...
{% block javascript %}
<script>
$(document).ready(function () {
...
});
</script>
{% endblock %}
现在,我需要在JS代码中使用一些从视图到模板传递的上下文var。我使用了在HTML元素中声明的选项,使用Django Template语法{{...}}
<div id="order_id" data-order-id={{order.id}}>
,使用JQ我得到了此元素并读取数据值。这样:
var orderId = $("#order_id").data('order-id')
这效果很好,但是我意识到,如果我将代码具有相同的代码。这样:
var orderId = {{ order.id }};
var changeStatusUrl = "{% url 'orders:change_status' %}"
这也很好,所以我的问题是这是一个好习惯,还是我将来会面临一些缺点。
如果Proyect是中等大小的。我通常实现的是拥有一个单独的JavaScript文件。在文件导入之前,我从Django模板出现中生成所需的变量。
例如,如果绘制了线图。我的变量数据将具有所需的值。然后,我将导入一个在变量顶部构建的脚本。
<script>var data = [{% for s in stats %}{{s}},{% endfor %}];</script>
<script src="{% static "myapp/js/line.js" %}"></script>