学习目标:前后端混合开发
# 添加模板渲染
from flask import render_template
@app.route('/profile')
def profile():
return render_template('profile.html',
username="开发者",
skills=['Vue', 'JavaScript'])
✅ 实践任务:
创建templates
目录
使用Jinja2语法制作包含循环和条件判断的模板
实现一个注册表单(GET/POST处理)
使用Bootstrap美化页面
要在 Flask 应用中创建 templates 目录以支持 HTML 模板,你可以按照以下步骤进行:
以下是一个示例,展示了如何实现这些步骤:
在项目根目录下创建 templates 文件夹,并在其中创建以下两个文件:
home.html 内容:
首页
欢迎来到首页!
profile.html 内容:
用户资料
这是用户资料页面。
接下来,更新 app.py 文件以渲染这些模板:
# app.py
from flask import Flask, jsonify, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('home.html')
@app.route('/profile')
def profile():
return render_template('profile.html')
@app.route('/api')
def api():
return jsonify({"message": "这是API端点。"})
if __name__ == '__main__':
app.run(debug=True)
确保你的项目结构如下:
/your_project_directory
├── app.py
└── templates
├── home.html
└── profile.html
然后在终端中运行 python app.py,并在浏览器中访问相应的路由来查看效果。
使用 Jinja2 语法,你可以在模板中实现循环和条件判断。以下是如何在 Flask 应用中使用 Jinja2 创建包含循环和条件判断的模板的示例。
我们将更新 home.html 模板,以展示一个包含循环和条件判断的示例。假设我们有一个用户列表,并根据用户的状态显示不同的信息。
更新后的 home.html 内容:
首页
欢迎来到首页!
用户列表
{% for user in users %}
-
{{ user.name }} -
{% if user.active %}
活跃
{% else %}
不活跃
{% endif %}
{% endfor %}
接下来,我们需要在 app.py 中传递一个用户列表到模板中:
# app.py
from flask import Flask, jsonify, render_template
app = Flask(__name__)
@app.route('/')
def home():
users = [
{"name": "张三", "active": True},
{"name": "李四", "active": False},
{"name": "王五", "active": True}
]
return render_template('home.html', users=users)
@app.route('/profile')
def profile():
return render_template('profile.html')
@app.route('/api')
def api():
return jsonify({"message": "这是API端点。"})
if __name__ == '__main__':
app.run(debug=True)
确保你的项目结构仍然正确,然后在终端中运行 python app.py。访问首页时,你将看到用户列表及其状态的显示。
要实现一个注册表单并处理 GET 和 POST 请求,你可以按照以下步骤进行:
首先,在 templates 目录中创建一个新的 HTML 文件,例如 register.html,用于显示注册表单。
register.html 内容:
注册
注册表单
接下来,更新 app.py 文件以处理注册表单的 GET 和 POST 请求。
# app.py
from flask import Flask, jsonify, render_template, request, redirect, url_for
app = Flask(__name__)
@app.route('/')
def home():
users = [
{"name": "张三", "active": True},
{"name": "李四", "active": False},
{"name": "王五", "active": True}
]
return render_template('home.html', users=users)
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
# 在这里可以添加用户注册逻辑,例如保存到数据库
print(f"注册用户: {username}, 密码: {password}") # 仅用于示例
return redirect(url_for('home')) # 注册后重定向到首页
return render_template('register.html')
@app.route('/profile')
def profile():
return render_template('profile.html')
@app.route('/api')
def api():
return jsonify({"message": "这是API端点。"})
if __name__ == '__main__':
app.run(debug=True)
确保你的项目结构正确,然后在终端中运行 python app.py。访问 http://127.0.0.1:5000/register 来查看注册表单,填写信息并提交后将重定向到首页。
要使用 Bootstrap 美化你的 Flask 应用页面,你可以按照以下步骤进行:
在你的 HTML 模板中引入 Bootstrap 的 CSS 和 JS 文件。你可以使用 Bootstrap 的 CDN(内容分发网络)来快速引入。
我们将更新 home.html 和 register.html 模板,以使用 Bootstrap 的样式和组件。
首页
欢迎来到首页!
用户列表
{% for user in users %}
-
{{ user.name }} -
{% if user.active %}
活跃
{% else %}
不活跃
{% endif %}
{% endfor %}
注册
注册表单
确保你的项目结构正确,然后在终端中运行 python app.py。访问首页和注册页面,你将看到使用 Bootstrap 美化后的页面。