我想将数据从Django发送到JavaScript,以便可以在JS + Vue中编写所有逻辑并保持html干净。
在Django中,我有
context={'names':{'fn':'john','ln':'cena'}}
return render(request,'app/page1.html',context)
在我拥有的page1.html
模板中
<script type="text/javascript"> var names="{{names}}"; </script>
在javascript中如何访问names.fn
和names.ln
?
我还有两个相关问题:
{% if x > y %}
保留在模板中,还是可以将逻辑部分移至JS + Vue并仅将数据结构保留在模板中。我之所以这样问是因为,当我在浏览器窗口中检查页面源代码时,可以看到整个JS代码,但是看不到html的Django条件语句中的任何内容:{% if x>y %} ----THIS IS INVISIBLE IN A BROWSER---- {% endif %}
谢谢
答案 0 :(得分:2)
{{names|json_script("names")}}
然后在JS中:
var names = JSON.parse(document.getElementById('names').textContent);
或者,安装django-jsonify
;然后,您可以直接说
{% load jsonify %}
<script type="text/javascript"> var names={{names|jsonify}}; </script>
关于第二个问题:Vue(或Angular或React或Ractive或Knockout ...)所做的一切都是在客户端,Django所做的一切都是在服务器端。如果您要构建单页应用程序,则应尽可能使用Vue(或Angular或React或Ractive或Knockout ...)来完成;如果不是,那么您可能不需要这样的框架。