欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 文化 > flask实现mvc模式

flask实现mvc模式

2025/7/8 13:22:58 来源:https://blog.csdn.net/lycwhu/article/details/146080042  浏览:    关键词:flask实现mvc模式

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


Flask 实现 MVC 模式

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

目录结构

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)

# app/models.py
from flask_sqlalchemy import SQLAlchemydb = 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(控制器层)

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

# app/controllers.py
from flask import render_template
from app.models import Productdef get_products():products = Product.query.all()return render_template("index.html", products=products)

3. View(视图层)

前端 HTML 模板(使用 Jinja2)

<!-- 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 入口文件

# app.py
from flask import Flask
from app.models import db
from app.controllers import get_productsapp = 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 及其扩展:
    pip install flask flask-sqlalchemy
    
  2. 运行应用:
    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 模式,使代码结构清晰、易维护! 🚀

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com