一、技能目标
-
理解 Flask 框架基本概念与特点
-
掌握 Flask 路由与视图函数的使用
-
熟练使用 Jinja2 模板引擎渲染动态页面
-
能够处理表单提交与数据验证
-
能独立搭建并部署 Flask 应用
二、Flask 框架概述
-
Flask 是基于 Python 的轻量级 Web 微框架,设计简洁、灵活、易用,无强制复杂项目结构。
-
核心依赖:
-
Werkzeug:提供 WSGI 接口、HTTP 请求与响应处理、路由等核心功能
-
Jinja2:模板引擎,用于动态生成 HTML 页面
-
-
特点:核心简洁,提供 Web 开发核心工具,可通过扩展库补充高级功能,适合新手、快速原型、小型 Web 应用。
三、安装 Flask(实验过程)
-
基础安装命令
-
pip3 install flask
-
配置阿里源
bash
pip3 config set global.index-url http://mirrors.aliyun.com/pypi/simple
pip3 config set install.trusted-host mirrors.aliyun.com
- 配置华为源
bash
pip3 config set global.index-url http://mirrors.huaweicloud.com/repository/pypi/simple
pip3 config set install.trusted-host mirrors.huaweicloud.com
- 升级 pip
bash
python3 -m pip install --upgrade pip
四、第一个 Flask 应用(实验过程)
1. 实验步骤
-
新建文件:app.py
-
写入代码:
python
bash
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!\n'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)
- 命令行运行:
python3 app.py
浏览器访问:http://127.0.0.1:5000/,查看输出结果
2. 代码解析
-
__name__:确定应用根路径 -
@app.route('/'):绑定 URL 与视图函数 -
return:返回 HTTP 响应 -
app.run参数:host 允许外部访问;port 指定端口;debug 开启调试模式
五、路由与视图函数(实验过程)
实验 1:动态路由
- 代码编写:
python
bash
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!\n'
@app.route('/greet/<name>')
def greet(name):
return f'Hello,{name}!\n'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)
-
运行:
python3 app.py -
访问测试:
http://127.0.0.1:5000/greet/Alice
实验 2:指定 HTTP 请求方法
- 代码添加:
python
bash
@app.route('/submit', methods=['POST'])
def submit():
return 'Form submitted successfully!\n'
- 运行服务,用 curl 测试:
bash
curl -X POST 127.0.0.1:5000/submit
- GET 访问测试,观察405错误
实验 3:Jinja2 模板渲染
-
新建文件夹:templates
-
新建
greet.html:
html
bash
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Flask Example</title>
</head>
<body>
<h1>Hello, {{ name }}!</h1>
</body>
</html>
- Python 代码:
python
bash
from flask import render_template
@app.route('/greet/<name>')
def greet(name):
return render_template('greet.html', name=name)
- 运行并访问:
http://127.0.0.1:5000/greet/zhangsan
实验 4:模板继承
-
templates下新建base.html -
新建
index.html继承父模板 -
编写视图函数渲染
index.html -
运行查看页面效果
六、表单处理(实验过程)
实验步骤
- 安装扩展:
bash
运行
pip3 install flask-wtf
- 新建文件:biaodan.py
python
bash
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField
from wtforms.validators import DataRequired
app = Flask(__name__)
app.secret_key = 's3cr3t'
class NameForm(FlaskForm):
name = StringField('Name', validators=[DataRequired()])
@app.route('/', methods=['GET','POST'])
def index():
form = NameForm()
if form.validate_on_submit():
return f'Hello,{form.name.data}!'
return render_template('index.html', form=form)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)
-
templates新建index.html表单模板 -
运行:
python3 biaodan.py -
浏览器访问,提交表单测试验证
常用验证器
-
DataRequired ():必填
-
Length (min=2,max=50):长度验证
-
Email ():邮箱格式
-
EqualTo ('password'):值一致
七、项目结构与部署(实验过程)
实验 1:标准项目结构搭建
- 按以下结构创建文件夹与文件
plaintext
/my_flask_app
/app
/templates
/static
__init__.py
routes.py
forms.py
run.py
- 分别写入对应代码
实验 2:生产环境部署
- 安装 Gunicorn:
bash
bash
pip3 install gunicorn
- 运行部署命令:
bash
bash
gunicorn -w 2 -b 0.0.0.0:8000 app:app
访问http://127.0.0.1:8000验证
八、简单博客应用(实验过程)
实验步骤
- 项目结构:
plaintext
/simple_blog
/app
/templates
index.html
app.py
- 编写
app.py:
python
bash
from flask import Flask, render_template, request
app = Flask(__name__)
posts = []
@app.route('/', methods=['GET','POST'])
def index():
if request.method == 'POST':
title = request.form['title']
content = request.form['content']
posts.append({'title':title, 'content':content})
return render_template('index.html', posts=posts)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)
-
编写
index.html模板 -
运行测试:
python3 app.py -
提交文章,查看列表展示
-
生产部署:
gunicorn -w 2 -b 0.0.0.0:8000 app:app
九、总结
Flask 是轻量级微框架,核心包含路由、视图、Jinja2 模板、表单处理;开发用app.run,生产用 Gunicorn+Nginx,可快速搭建小型 Web 应用。