如何使用Javascript变量设置jinja2表达式?

时间:2017-01-07 02:07:11

标签: javascript python flask jinja2

如何在js函数中使用Jinja2表达式?我尝试过与下面这些类似的东西,但表达方式并没有奏效。响应中使用的属性fileList是来自flask通过Json的列表。

var response = JSON.parse(req.responseText);  
{% set myFiles = response.fileList %}

2 个答案:

答案 0 :(得分:1)

Jinja2是一种模板语言。这意味着在提供给客户端之前,所有模板表达式都将被评估并替换为文本或HTML代码。 而Javascript是客户端使用的脚本语言。

因此实际上没有办法将任何值从Javascript传递给Jinja2表达式,因为客户端上根本不存在任何Jinja2表达式,因为它们已经被文本或html代码替换了。

但是,如果您只是想将任何数据从客户端传递到服务器,那么有很多方法可以做到这一点。可能最适合你的是Ajax电话。

答案 1 :(得分:0)

我认为您希望在js中包含表达式或语句。 可以使用双引号(“”)。您不能直接在js文件中添加一件事。在代码末尾使用您的代码

var response = JSON.parse(req.responseText);  
"{% set myFiles = response.fileList %}"

为清楚理解,

app.py
@app.route('/')
def home():
    return render_template('index.html',check=0,text='hai')

index.html
<div>
.
.
.
</div>
<script>
var text = {{ text }} //Throws error
var text = "{{ text }}" //console it

{% if(check == 0) %}
    console.log('its true')
{% endif %}  //Throw error

"{% if(check == 0) %}"
    console.log('its true')
"{% endif %}"//Success
</script>

它为我工作。投票表决是否可行