Python Flask模板详细用法介绍

本文概述

  • 渲染外部HTML文件
  • 定界符
  • 在HTML中嵌入Python语句
  • 在HTML中引用静态文件
在前面的示例中, 我们返回了简单字符串作为view函数的响应。虽然, flask帮助我们以HTML模板的形式返回响应。在本教程的这一部分中, 我们将介绍从Web应用程序返回HTML响应的方法。
例子
下面的flask脚本包含一个视图函数, 即与URL’ /’ 相关联的message()。与其返回简单的纯字符串作为消息, 不如使用HTML返回一条带有< h1> 标签的消息。
script.py
from flask import *app = Flask(__name__)@app.route('/')def message():return "< html> < body> < h1> Hi, welcome to the website< /h1> < /body> < /html> "if __name__ == '__main__':app.run(debug = True)

Python Flask模板详细用法介绍

文章图片
渲染外部HTML文件 Flask帮助我们呈现外部HTML文件, 而不是在视图函数中对HTML进行硬编码。在这里, 我们可以利用Python Flask所基于的jinja2模板引擎。
Flask为我们提供了render_template()函数, 该函数可用于呈现外部HTML文件, 以作为来自视图函数的响应返回。
考虑以下示例。
例子
要从视图功能渲染HTML文件, 首先让我们创建一个名为message.html的HTML文件。
message.html
< html> < head> < title> Message< /title> < /head> < body> < h1> hi, welcome to the website < /h1> < /body> < /html>

script.py
from flask import *app = Flask(__name__)@app.route('/')def message():return render_template('message.html')if __name__ == '__main__':app.run(debug = True)

在这里, 我们必须在应用程序目录中创建文件夹模板, 并将Python Flask脚本中引用的HTML模板保存在该目录中。
在我们的示例中, 脚本文件script.py的路径为E:\ flask, 而HTML模板的路径为E:\ flask \ templates。
应用目录
  • script.py
  • 范本
  • message.html
Python Flask模板详细用法介绍

文章图片
定界符 【Python Flask模板详细用法介绍】Jinga 2模板引擎提供了一些定界符, 可在HTML中使用这些定界符以使其能够动态表示数据。模板系统提供了一些HTML语法, 这些语法是变量和表达式的占位符, 在呈现模板时将其替换为它们的实际值。
jinga2模板引擎提供以下定界符以从HTML中转义。
  • {%… %}用于声明
  • {{… }}用于将表达式打印到模板输出
  • {#… #}用于模板输出中未包含的注释
  • #… ##用于行语句
例子
考虑以下示例, 其中使用{{… }}分隔符在HTML脚本中显示URL的可变部分。
message.html
< html> < head> < title> Message< /title> < /head> < body> < h1> hi, {{ name }}< /h1> < /body> < /html>

script.py
from flask import *app = Flask(__name__) @app.route('/user/< uname> ')def message(uname):return render_template('message.html', name=uname)if __name__ == '__main__':app.run(debug = True)

Python Flask模板详细用法介绍

文章图片
URL http:// localhost:5000 / user / admin的可变部分在HTML脚本中使用{{name}}占位符显示。
在HTML中嵌入Python语句 由于HTML是一种标记语言, 并且仅用于设计目的, 因此有时在Web应用程序中, 我们可能需要执行用于通用计算的语句。为此, Flask为我们简化了定界符{%… %}, 该定界符可用于将简单的python语句嵌入HTML。
例子
在以下示例中, 我们将打印URL中指定的数字表, 即URL http:// localhost:5000 / table / 10将在浏览器窗口中打印10的表。
在这里, 我们必须注意, for循环语句包含在{%… %}分隔符内, 而循环变量和数字包含在{{… }}占位符内。
script.py
from flask import *app = Flask(__name__) @app.route('/table/< int:num> ')def table(num):return render_template('print-table.html', n=num)if __name__ == '__main__':app.run(debug = True)

print-table.py
< html> < head> < title> print table< /title> < /head> < body> < h2> printing table of {{n}}< /h2> {% for iin range(1, 11): %}< h3> {{n}} X {{i}} = {{n * i}} < /h3> {% endfor %}< /body> < /html>

Python Flask模板详细用法介绍

文章图片
在HTML中引用静态文件 诸如CSS或JavaScript文件之类的静态文件可增强HTML网页的显示。 Web服务器被配置为从包中或模块旁边的静态文件夹中提供此类文件。静态文件位于应用程序的路径/ static处。
例子
在以下示例中, flask脚本返回HTML文件, 即message.html, 该文件使用样式表style.css设置样式。 flask模板系统在static / css目录下找到静态CSS文件。因此, style.css将保存在指定路径中。
script.py
from flask import *app = Flask(__name__)@app.route('/')def message():return render_template('message.html')if __name__ == '__main__':app.run(debug = True)

message.html
< html> < head> < title> Message< /title> < link rel="stylesheet" href="http://www.srcmini.com/{{ url_for('static', filename='css/style.css') }}"> < /head> < body> < h1> hi, welcome to the website< /h1> < /body> < /html>

style.css
body {background-color: powderblue; }h1 {color: blue; }p {color: red; }

Python Flask模板详细用法介绍

文章图片

    推荐阅读