将 ReactJS 与 Jinja2 和 Webapp2 结合使用

Using ReactJS with Jinja2 and Webapp2

我正在开发一个项目,在该项目中我将 React js 与 Webapp2 结合使用。我正在尝试在 React 组件中使用 jinja2。它编译成功但是当我实际加载网页时。它在控制台中给出错误。这是处理程序代码,我只是在其中呈现页面并传递一些值。

class Login(BaseHandler, Handler):
    def get(self):
        jinja_environment = self.jinja_environment
        template = jinja_environment.get_template("/index.html")
        self.response.out.write(template.render({'a': "aa", 'b': "bb"})) 

我尝试了以下两种在 React 中使用 jinja2 的方法。

方法一:

var Main = (props) => {
    return (
        <div>
        {{a}} // directly use the jinja2 variable.
        <Nav/>
        <div className="row">
            <div className="columns medium-6 large-4 small-centered">
                {props.children}
            </div>
        </div>
    </div>
   );
};

此方法在控制台上出现以下错误:

方法二: 我通常在 Javascript 中使用此方法,并且在那里工作正常。它不显示值,但页面呈现成功。

var Main = (props) => {
    var a = '{{a}}';
    return (
        <div>
            {a}
            <Nav/>
            <div className="row">
                <div className="columns medium-6 large-4 small-centered">
                    {props.children}
                </div>
            </div>
        </div>
    );
};

这是页面浏览量。

请帮助我哪里做错了。

Flask 只预处理模板文件中的标记。它永远不会包含静态文件。因此,在反应加载脚本之前将此脚本放在您的模板中,以便您的反应应用程序可以访问变量 x。

观看次数

import json
....
template.render({'some_details': json.dumps({'foo':'bar'})})
return render_template('login.html', some_details=json.dumps({"foo":"bar}))

在模板中

<script type="text/javascript">
  var x = {{ some_details|safe }};
  console.log("x and x.foo", x, x.foo)
</script>
<script src="/static/react_bundle.js"></script>