下面是Python Flask入门之模板的完整攻略:
1. 概述
Python Flask是一种轻量级的Web框架,提供了非常简单的方式来构建Web应用程序。在Flask中,模板是用来定义页面布局、数据展示和用户输入的一种方法。通过使用模板,可以在不同的页面中嵌入一些公共的HTML代码、样式等。本文将是一个Python Flask模板入门教程。
2. 准备工作
在使用Python Flask之前,需要先安装Flask。可以通过pip来安装:
pip install flask
3. 创建Flask应用程序
创建一个Python文件,起名app.py,引入Flask库,然后创建一个简单的Flask应用程序。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello World!"
if __name__ == '__main__':
app.run(debug=True)
这个程序创建了一个单页面的Flask应用程序,在浏览器中访问http://localhost:5000/ 将会看到"Hello World"的输出。
4. Flask模板
Flask模板使用Jinja2模板引擎。在Flask应用程序中,可以通过渲染模板来生成HTML页面。Flask应用程序的templates目录中留下所有模板文件。
首先,需要在应用程序的根目录下创建名为“templates”的文件夹。然后,为该应用程序创建一个HTML文件,被称为模板。例如,在应用程序的模板文件夹中创建名为“index.html”的文件:
<!DOCTYPE html>
<html>
<body>
<h1>{{ title }}</h1>
<p>Welcome to my Flask web page!</p>
</body>
</html>
要在Flask应用程序中使用模板,需要在视图函数中引入render_template 函数。render_template函数接受模板文件的名称和变量的字典,然后将变量替换为HTML页面上的相应提取的值。例如,下面的视图函数将呈现在上述模板文件中添加的title变量:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
title = 'Homepage'
return render_template('index.html', title=title)
if __name__ == '__main__':
app.run(debug=True)
在浏览器中访问http://localhost:5000 将会看到一个可读内容为“Homepage”的标题。
5. 示例1:Flask模板的继承
另一个非常强大的特性是Flask模板继承。Flask模板继承允许将一些公共部分继承到所有页面。这将减少代码的重复,并使代码的维护更加容易。
首先,需要创建base.html文件作为父模板。在该模板中定义页面的公共部分:
<!DOCTYPE html>
<html lang="en">
<head>
<title>{% block title %}{% endblock %}</title>
</head>
<body>
<header>
{% block header %}
<h1>Welcome to my Flask web site!</h1>
{% endblock %}
</header>
{% block content %}{% endblock %}
<footer>
{% block footer %}
<p>© 2021 My Amazing Flask Site</p>
{% endblock %}
</footer>
</body>
</html>
然后,在子模板中将该公共部分继承。下面是一个用于继承的视图函数:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index_child.html')
if __name__ == '__main__':
app.run(debug=True)
注意,在这种情况下,在子模板中可以使用父模板中定义的每个块的标识符。这样,子模板将只覆盖选定块的内容,并保留剩余内容。
下面是继承base.html文件的示例子模板:
{% extends "base.html" %}
{% block title %}Homepage{% endblock %}
{% block header %}
{{ super() }}
<h2>It's good to see you again!</h2>
{% endblock %}
{% block content %}
<h3>Welcome to my Home page!</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
{% endblock %}
在浏览器中访问http://localhost:5000 将会看到一个可读内容为“Homepage”的标题,继承自继承base.html文件的子模板。
6. 示例2:控制流与模板
使用控制流可以使Flask应用程序更加动态。例如,可以使用if和for语句,使内容根据数据的不同而动态显示。
在本示例中,我们将从一个包含人物名字和所属城市的字典开始。我们将使用模板和控制流创建以下列表。
首先,需要更新视图函数来提供一个含有列表信息的变量:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
people = [
{'name': 'Alice', 'city': 'New York'},
{'name': 'Bob', 'city': 'Los Angeles'},
{'name': 'Charlie', 'city': 'Chicago'},
{'name': 'David', 'city': 'Houston'}
]
return render_template('people.html', people=people)
if __name__ == '__main__':
app.run(debug=True)
接下来,定义people.html模板,并使用for语句在HTML页面中创建一个动态列表:
{% extends "base.html" %}
{% block title %}People{% endblock %}
{% block content %}
<h1>People</h1>
<ul>
{% for person in people %}
<li>{{ person['name'] }} - {{ person['city'] }}</li>
{% endfor %}
</ul>
{% endblock %}
在浏览器中访问http://localhost:5000 将会看到一个包含4个元素的名字和城市列表。
以上就是Python Flask入门之模板的完整攻略,包含了“Flask模板”、“示例1:Flask模板的继承”、“示例2:控制流与模板”三个内容。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python Flask入门之模板 - Python技术站