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()

data = request.get_json()

return jsonify({"received": data})

表单数据 request.formapplication/x-www-form-urlencoded username = request.form['username']
文件上传 request.files

file = request.files['file']

file.save('/path/to/save')

原始数据 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')

 

posted @ 2025-09-22 18:26  星光闪闪  阅读(50)  评论(0)    收藏  举报