现在主流的Python web框架中,模板的表达式声明都大同小异,常见的有{{ something }}和{% something %}两类,而前者与Vue.js的语法冲突,导致在运行Python(例如Flask)时,Vue语法被Python解析触发报错。

  1. 对于Flask,解决该问题的方式最简单的就是在Vue实例的DOM外,通过声明raw,表示其中的内容不由flask转义即可解决冲突:

    {% raw %}
    <div>
    {{vue}}
    </div>
    {% endraw %}
  2. 如果可以改变jinja2模板:

    app.jinja_env.variable_start_string = '{['
    app.jinja_env.variable_end_string = ']}'

    jinjia2模板引擎取值变成{[ ]}
    如果只想改变Vue模板,可以这样使用:

    var app = new Vue({
         delimiters:['{[', ']}']
     })

    Vue取值变成{[ ]}