flask实现mvc模式

Flask 默认是一个轻量级框架,并不强制使用 MVC 模式,但我们可以按照 MVC 结构来组织代码,使项目更加清晰和可维护。


Flask 实现 MVC 模式

Flask 本身并没有严格的 Controller 层,但我们可以通过 视图函数(View Functions) 充当 Controller,使其符合 MVC 模式。

目录结构

plaintext 复制代码
flask_mvc_app/
│── app/
│   ├── models.py        # Model (数据库模型)
│   ├── views.py         # View (视图逻辑)
│   ├── controllers.py   # Controller (路由 & 业务逻辑)
│   ├── templates/       # HTML 模板 (Jinja2)
│   │   ├── index.html
│   ├── static/          # 静态文件 (CSS, JS, images)
│── app.py               # 入口文件
│── config.py            # 配置文件
│── requirements.txt     # 依赖库

1. Model(模型层)

数据库模型(使用 Flask-SQLAlchemy)

python 复制代码
# app/models.py
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class Product(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), nullable=False)
    price = db.Column(db.Float, nullable=False)
    stock = db.Column(db.Integer, default=0)

    def __repr__(self):
        return f"<Product {self.name}>"

2. Controller(控制器层)

控制器(定义路由和业务逻辑)

python 复制代码
# app/controllers.py
from flask import render_template
from app.models import Product

def get_products():
    products = Product.query.all()
    return render_template("index.html", products=products)

3. View(视图层)

前端 HTML 模板(使用 Jinja2)

html 复制代码
<!-- app/templates/index.html -->
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>商品列表</title>
</head>
<body>
    <h1>商品列表</h1>
    <ul>
        {% for product in products %}
            <li>{{ product.name }} - ¥{{ product.price }} (库存: {{ product.stock }})</li>
        {% endfor %}
    </ul>
</body>
</html>

4. Flask 入口文件

python 复制代码
# app.py
from flask import Flask
from app.models import db
from app.controllers import get_products

app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///products.db"
db.init_app(app)

@app.route("/")
def index():
    return get_products()

if __name__ == "__main__":
    with app.app_context():
        db.create_all()  # 创建数据库表
    app.run(debug=True)

运行 Flask MVC 项目

  1. 安装 Flask 及其扩展:

    bash 复制代码
    pip install flask flask-sqlalchemy
  2. 运行应用:

    bash 复制代码
    python app.py
  3. 打开浏览器访问 http://127.0.0.1:5000/,即可看到商品列表。


总结

层次 Flask 实现方式
Model(模型) models.py 里定义数据库模型(使用 Flask-SQLAlchemy)
View(视图) templates/ 目录中的 HTML 模板
Controller(控制器) controllers.py 处理路由逻辑,调用 Model 并返回 View

这样组织代码后,Flask 也能遵循 MVC 模式,使代码结构清晰、易维护! 🚀

相关推荐
4SAPI4 小时前
多模型请求路由怎么设计?成本、速度和能力如何平衡
人工智能·python·gateway·php
XCDoris6 小时前
郴州logo设计机构
大数据·人工智能·python
gCode Teacher 格码致知7 小时前
Pandas教学-17:Series与Dataframe的关系
开发语言·python·pandas
马良神笔8 小时前
2026 年Rag最近技术前沿总结
后端·python·django
不像程序员的程序媛8 小时前
maven基础
python·pycharm·maven
xiaogai_gai9 小时前
仅查询策略实战:从金蝶云·星空旗舰版定时拉取收料通知单
大数据·数据库·python
benchmark_cc10 小时前
Python 量化系统如何设计统一的数据访问接口:从策略解耦到数据层架构
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
const_qiu10 小时前
第四章 00:开篇 —— 从「会聊天」到「记得住、会干活、能协作」
java·开发语言·人工智能·python
CoderYanger10 小时前
Java EE 进阶:4.Spring Web MVC 入门(第一弹)
java·开发语言·前端·spring·面试·java-ee·mvc
估值探索者10 小时前
【Python量化选股流水线 #04】选股器好不好用?「昨日候选→今日表现」回看验收
开发语言·python·股票数据·股票数据api接口