Django中引入vue没反应
首页 / 频道 / 显示主题:Django中引入vue没反应

Django中引入vue没反应


时间:2020年05月25日 12:01:20点击:1398类别:技术开发

在Django中引入了vue,但是demo中不能读取message:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue</title>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<p>{{ message }}</p>
</div>

<script>
new Vue({
el: '#app',
data: {
message: 'Hello Vue.js!'
}
})
</script>
</body>
</html>

问题出在“{{ }}”这个符号,原因是Django的模板系统会默认接管{{ }}中间的变量, 跟Vue.js就冲突了。
  把需要用到{{ }}的地方用模板标记:
  {% verbatim %} {{ message }} {% endverbatim %}
  包裹起来就好了。
  这个有点坑。
————————————————
版权声明:本文为CSDN博主「萝卜虫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq575379110/article/details/71194885

 

楼主低端人口9527

喜欢:(1398)  回复:(1)

0

以下为回复内容


读后有收获可以添加作者微信共同交流
打赏作者

1#楼的低端人口95272020年05月25日 12:02:32回复道:

在django模板语法中是通过{{ 变量名 }}的方式来引用变量,这是一种很流行的方式,在vue和angularJs中也是使用这种语法的,但是在用django+vue进行开发时,会遇到模板语法冲突,django的渲染器会把vue的代码中的变量覆盖掉,给我们的开发带来不便。
1.解决方案1
在django1.5以后的版本,给出了解决方法,即使用标签{% verbatim myblock %} {% endverbatim myblock %}
例如:

{% verbatim myblock %}
<span>Message: {{ msg }}</span>
{% endverbatim myblock %}
1
2
3
被此标签包裹的内容,django的模板引擎不会对其进行渲染,从而解决语法冲突的问题。

2.解决方案2
修改Vue的{{ }} 为{[ ]},即通过js代码<script>Vue.config.delimiters = ["{[", "]}"]</script>
使用的时候:

<div id="app1">
{[ message ]}
</div>
1
2
3
这样就解决了django模板语法和vue模板语法冲突的问题




也回复一个  举报