Flask with Jinja2-使用Jinja2语句将值从Flask传递到Javascript

这是我在flask中的代码

data = {"Bird" : "Its a bird!"}
@app.route('/store')
def store():
    return render_template('store.html',data = data)

这是我的Java代码

<script>
  var val = "Bird";
  var something = '{{ data[' + val +'] }}';
</script>

我不确定自己在做什么错,但我似乎无法让something成为"Its a bird!"

有什么想法吗?

zgyanfeng 回答:Flask with Jinja2-使用Jinja2语句将值从Flask传递到Javascript

您必须记住,Jinja2模板呈现是在执行JavaScript之前 进行的。您可以看到以下事实:您渲染了模板,然后将其返回给用户(或他们的浏览器)。

因此,该模板呈现过程中产生的所有内容都必须是有效的JavaScript才能运行。另外,Jinja2对HTML,JavaScript或其他语言一无所知。

使用这些知识基本上意味着您需要将所需的数据呈现到有效的JavaScript中:

//Handle any error
app.use(function(err,req,res,next) {
   // Do logging and user-friendly error message display
   logger.log({
    level:'error',message:err.message
  })

  if (err instanceof customError) {
    res.status(err.status).send({error:{status:err.status,message: err.message}});
  } 
    console.log(err)
    res.status(500).send({error:{status:500,message: "Something went wrong!"}}); 
})

但是,就个人而言,我将避免模板化JavaScript代码并找出其他方法或处理动态数据。

本文链接:https://www.f2er.com/3162216.html

大家都在问