Flask和角瓶

2024-05-15 21:12:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将AngularJs应用到我的flask项目中。在app.py中,我有以下代码可以呈现测试站点:

@app.route('/test/')
def test():
    return render_template('test.html')

在test.html中,我有:

<!DOCTYPE html>
<html lang="en" data-ng-app>
  <head>
    <meta charset="utf-8">
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
    <title>Flask-Triangle - Tutorial</title>
  </head>
  <body>
    <label>Name:</label>
    <input type="text" data-ng-model="yourName" placeholder="Enter a name here">
    <hr>
    <h1>Hello {{ yourName }}!</h1>
  </body>
</html>

当我在输入框中输入时,什么都不会发生。。 我已经检查了angular.min.js是否正确加载。 我需要在app.py中做些什么才能完成这项工作吗?


Tags: pytestappdatatitlehtmljsscript
2条回答

另一种解决方法是,您可以在顶部用{% raw %}和底部用{% endraw %}包装整个test.html内容。这将告诉金佳不要在这方面做任何特别的事情。如果您根本不打算使用jinja,这种方式只有在时才是好的。使用它也会使编写更好一些,因为您不再需要添加Joran Beasley suggested的修复程序。

示例:

&13;
&13;
{% raw %}
<!DOCTYPE html>
<html>
  <head>
    <!-- HEADER STUFF -->
  </head>
  <body>
    <!-- Normal AngularJS code and syntax -->
  </body>
</html>
{% endraw %}

Flask使用jinja作为模板语言,它还使用{{ variable }}

因此,当flask呈现模板时{{ yourname }}将变成空字符串,因为在当前呈现中,yourname不是上下文变量

要解决这个问题,可以使用flask-trianglehttp://flask-triangle.readthedocs.org/en/develop/tutorial/part1.html

它提供了一个模板过滤器

确保模板呈现正确的角度

你也可以在括号内使用转义括号(但我认为这要难看得多)

{{ '{{ yourname }}' }}

相关问题 更多 >