Flask使用教程

一、基本运行

1.简单运行

from flask import Flask

# app 就是你的网站本体。
app = Flask(__name__)

# 配置路由
@app.route('/')
def index():
    return "Hello,畅畅!"

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

然后可以直接运行该程序

2.返回html页面

  1. 在根目录创建templates文件夹
  2. 导入render库并返回html文件
from flask import Flask
from flask import render_template #导入render库

app = Flask(__name__)

# 配置路由
@app.route('/')
def index():
    # 默认在tamplates文件夹下寻找
    return render_template('changchang.html')

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

3.接收GET请求

导入request,并调用其args属性

from flask import Flask
from flask import render_template #导入render库
from flask import request

app = Flask(__name__)

# 配置路由
#methods:允许GET和POST请求传入
@app.route('/', methods=['GET', 'POST'])
def index():
    # 接收url路径传的参数
    # print( request.args )  # ImmutableMultiDict([('name', 'changchang')])
    name = request.args.get('name', None)

    # 默认在tamplates文件夹下寻找
    return render_template('changchang.html')

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

访问url路径

http://127.0.0.1:5000/?name=changchang

注:request.args会返回一个ImmutableMultiDict([('name', 'changchang')])对象,是一个字典对象。可以用get方法来获取值

4.接收POST请求


#接收form表单提交的数据
@app.route('/formtest', methods=['POST'])
def form_test():
    data = request.form.get('data', None)
    print(f"Received POST data: {data}")
    return f"POST data received: {data}"

# 接收json数据
@app.route('/jsontest', methods=['POST'])
def json_test():
    data = request.json #这里的data是对应的字典
    print(data)
    return data

二、蓝图:路由分配

  1. 创建一个子路由文件book.py
# book.py
from flask import Blueprint

bookbp = Blueprint("book",__name__)

# 注册为一个子路由的根路径
@bookbp.route('/')
def book_index():
    return "这是book子路由的首页"
  1. 在主程序中导入该子路由
from flask import Flask
from flask import render_template 
from flask import request
# 导入蓝图(子路由),可以导入多个
from book import bookbp

app = Flask(__name__)

# 注册蓝图(子路由)
app.register_blueprint(bookbp, url_prefix='/book') # 给子路由设置一个前缀,可以通过/book访问book子路由

@app.route('/', methods=['GET', 'POST'])
def index():
    name = request.args.get('name', None)
    print(f"Received name: {name}")

    return render_template('changchang.html')

if __name__ == '__main__':
    app.run(debug=True)
  1. 访问子路由的根路径
http://127.0.0.1:5000/book/

三、ORM:操作MySQL数据库

1.安装MySQL驱动

pip install flask_sqlalchemy
# 还需要安装mysqldb或pymysql
# pip install flask-mysqldb
pip install pymysql

2.在主程序中连接MySQL

from flask import Flask, jsonify, request
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# 配置 MySQL 连接
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:你的密码@localhost:3306/flask_db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

参数说明

项目 含义
root MySQL 用户名
你的密码 MySQL 密码
localhost 本机
3306 MySQL 默认端口
flask_db 数据库名称(需要你提前创建)

3.创建数据库与数据表

3.1 创建数据库

CREATE DATABASE flask_db;

3.2 在Flask中定义数据表(Model)

在主程序中添加:

class User(db.Model):
    __tablename__ = 'users'  # 表名
    id = db.Column(db.Integer, primary_key=True)       # 主键
    name = db.Column(db.String(50), nullable=False)    # 姓名
    age = db.Column(db.Integer, nullable=False)        # 年龄

# 创建表(只需执行一次)
with app.app_context():
    db.create_all()

运行后会在MySQL中创建表:

users
 ├── id
 ├── name
 └── age

4.实现增删改查

4.1 增加数据

接口:POST /add

@app.route('/add', methods=['POST'])
def add_user():
    name = request.json.get('name')
    age = request.json.get('age')

    user = User(name=name, age=age)
    db.session.add(user)
    db.session.commit()

    return jsonify({"message": "用户添加成功"})

测试(用 curl 或 Postman):

curl -X POST http://127.0.0.1:5000/add -H "Content-Type: application/json" -d "{\"name\":\"畅畅\",\"age\":20}"

4.2 查询数据

查询全部用户

接口:GET /users

@app.route('/users', methods=['GET'])
def get_users():
    users = User.query.all()
    data = [{"id": u.id, "name": u.name, "age": u.age} for u in users]
    return jsonify(data)

查询单个用户

接口:GET /user/<id>

@app.route('/user/<int:uid>', methods=['GET'])
def get_user(uid):
    user = User.query.get(uid)
    if not user:
        return jsonify({"error": "用户不存在"}), 404

    return jsonify({"id": user.id, "name": user.name, "age": user.age})

修改数据

接口:PUT /update/<id>

@app.route('/update/<int:uid>', methods=['PUT'])
def update_user(uid):
    user = User.query.get(uid)
    if not user:
        return jsonify({"error": "用户不存在"}), 404

    user.name = request.json.get('name', user.name)
    user.age  = request.json.get('age', user.age)

    db.session.commit()
    return jsonify({"message": "用户更新成功"})

删除数据

接口:DELETE /delete/<id>

@app.route('/delete/<int:uid>', methods=['DELETE'])
def delete_user(uid):
    user = User.query.get(uid)
    if not user:
        return jsonify({"error": "用户不存在"}), 404

    db.session.delete(user)
    db.session.commit()

    return jsonify({"message": "用户已删除"})
posted @ 2026-07-02 18:05  畅畅c  阅读(0)  评论(0)    收藏  举报