python总结-flask
简介
Flask 是一个基于 Python 的轻量级 Web 框架
Flask 仅提供基础功能(如路由、请求/响应处理),不强制依赖数据库、表单验证等工具,开发者可按需选择扩展。
使用
安装 Flask
pip install flask
路由系统:
通过 @app.route() 装饰器将 URL 映射到视图函数,支持动态路由(如 /user/<id>)和 HTTP 方法(GET、POST 等)。
from flask import Flask
app = Flask(__name__)
@app.route('/hello/<name>')
def hello(name):
return f'Hello, {name}!'
if __name__ == '__main__':
app.run(debug=True) # 启动开发服务器,开启调试模式
app = Flask(__name__) 是 Flask 应用的起点,其核心作用是通过 __name__ 确定项目根目录、资源路径和运行环境。
Flask 通过python的特殊变量 __name__ 确定项目的根目录,从而自动查找以下默认路径: 模板文件夹:templates/(存放 HTML 模板);静态文件夹:static/(存放 CSS、JS、图片等静态资源)
若项目结构为:
myapp/
├── app.py # 包含 `app = Flask(__name__)`
├── templates/
│ └── index.html
└── static/
└── style.css
Flask 会自动识别 templates 和 static 文件夹,无需额外配置。
配置加载:Flask 通过 __name__ 查找 instance_folder(实例文件夹),用于存放敏感配置(如数据库密码)。
请求方式:
Flask 通过路由装饰器的参数 methods 显式指定允许的 HTTP 方法。如果不指定,默认仅支持 GET。
from flask import Flask, request, jsonify
app = Flask(__name__)
# 默认仅支持 GET
@app.route('/hello')
def hello():
return "Hello, GET request!"
# 显式指定支持 POST
@app.route('/submit', methods=['POST'])
def submit():
data = request.get_json() # 获取请求体中的 JSON 数据
return jsonify({"message": f"Received: {data}"}), 201
# 同时支持 GET 和 POST
@app.route('/api', methods=['GET', 'POST'])
def api():
if request.method == 'POST':
return "This is a POST response."
return "This is a GET response."
请求体:
Flask 通过 request 对象(来自 flask 模块)访问请求体数据,支持多种格式(JSON、表单、文件等)。
| 请求体类型 | 处理方式 | 示例 |
|---|---|---|
| JSON | request.get_json() |
|
| 表单数据 | request.form(application/x-www-form-urlencoded) |
username = request.form['username'] |
| 文件上传 | request.files |
|
| 原始数据 | request.data(字节流) |
适用于非结构化数据(如二进制、XML)。 |
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/json', methods=['POST'])
def handle_json():
data = request.get_json() # 解析 JSON 请求体
if not data:
return jsonify({"error": "No JSON data"}), 400
return jsonify({"received": data}), 200
@app.route('/form', methods=['POST'])
def handle_form():
username = request.form.get('username') # 获取表单字段
return f"Hello, {username}!"
请求头:
user_agent = request.headers.get('User-Agent')

浙公网安备 33010602011771号