个性化阅读
专注于IT技术分析

Python Flask模板详细用法介绍

本文概述

在前面的示例中, 我们返回了简单字符串作为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模板

定界符

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 i  in 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="{{ 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模板

赞(0) 打赏
未经允许不得转载:srcmini » Python Flask模板详细用法介绍
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏