前言

这里只是是一本flask的简单修炼手册


什么是flask

Flask 是一个轻量级的 Python Web 框架,以其简洁、灵活和易扩展的特性受到开发者青睐。它提供了 Web 开发的核心功能,同时允许开发者根据需求自由选择扩展库。本手册将系统介绍 Flask 的核心概念和基本使用方法。


主要内容

1. 安装与基础设置

1
2
3
4
5
6
7
8
9
10
11
12
13
# 安装 Flask
pip install flask

# 最小应用示例
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
return 'Hello, World!'

if __name__ == '__main__':
app.run(debug=True)

2. 路由系统

  • 基本路由:使用 @app.route() 装饰器定义 URL 规则
  • 动态路由:支持变量规则 <variable_name>
  • HTTP 方法:指定支持的请求方法(GET、POST 等)
1
2
3
4
5
6
7
8
9
10
@app.route('/user/<username>')
def show_user_profile(username):
return f'User {username}'

@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
return do_login()
else:
return show_login_form()

3. 请求处理

  • 请求对象:通过 request 对象访问请求数据
  • 表单处理:处理 POST 请求中的表单数据
  • 文件上传:支持文件上传功能
1
2
3
4
5
6
7
from flask import request

@app.route('/submit', methods=['POST'])
def submit():
name = request.form['name']
file = request.files['file']
return f'Received {name} and file'

4. 响应处理

  • 返回类型:支持字符串、模板、JSON 等多种响应格式
  • 重定向:使用 redirect() 函数
  • 错误处理:通过 abort() 返回错误状态码
1
2
3
4
5
6
7
8
9
from flask import render_template, jsonify, redirect

@app.route('/data')
def get_data():
return jsonify({'key': 'value'})

@app.route('/old')
def old_url():
return redirect('/new')

5. 模板引擎(Jinja2)

  • 模板渲染:使用 render_template() 函数
  • 模板继承:支持模板继承和块功能
  • 控制结构:包含条件判断、循环等逻辑
1
2
3
@app.route('/hello/<name>')
def hello(name):
return render_template('hello.html', name=name)

6. 会话管理

  • Cookie 操作:设置和读取客户端 Cookie
  • Session:服务端会话管理
1
2
3
4
5
6
7
8
9
10
from flask import session

@app.route('/set')
def set_session():
session['username'] = 'admin'
return 'Session set'

@app.route('/get')
def get_session():
return session.get('username', 'Not set')

7. 扩展库生态

  • Flask-SQLAlchemy:数据库 ORM 支持
  • Flask-WTF:表单验证和 CSRF 保护
  • Flask-Login:用户认证管理
  • Flask-RESTful:REST API 开发

8. 配置管理

  • 配置方式:支持多种配置加载方式
  • 环境变量:通过环境变量区分开发/生产环境
1
2
app.config['SECRET_KEY'] = 'your-secret-key'
app.config['DEBUG'] = True

9. 错误处理

1
2
3
@app.errorhandler(404)
def page_not_found(error):
return render_template('404.html'), 404

10. 部署运行

1
2
3
4
5
# 开发服务器
app.run(host='0.0.0.0', port=5000, debug=True)

# 生产部署(使用 WSGI 服务器)
# gunicorn app:app

总结

Flask 作为一个微框架,提供了 Web 开发的核心功能,同时保持了高度的灵活性。其简洁的 API 设计使得初学者能够快速上手,而丰富的扩展生态又能满足复杂项目的需求。通过本手册介绍的核心功能,开发者可以构建从简单静态页面到复杂 Web 应用程序的各种项目。

核心优势

  • 轻量级,学习曲线平缓
  • 文档完善,社区活跃
  • 扩展性强,可灵活组合功能
  • 适合中小型项目快速开发