Flask MVC

Flask MVC

Flask MVC

Flask是一个轻量级的Python Web框架,由于其简洁、灵活和易上手的特点,越来越受到开发者的青睐。MVC(Model-View-Controller)是一种软件架构模式,将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)。在本文中,将详细解释如何在Flask应用中使用MVC模式。

MVC概念介绍

模型(Model)

模型是应用程序的核心部分,负责处理数据的存储和操作。在Flask应用中,可以使用ORM(对象关系映射)来表示模型,ORM可以将数据库中的表映射为Python中的类,实现数据的持久化存储。常用的ORM库有SQLAlchemy、Peewee等。

视图(View)

视图是用户界面的呈现部分,负责向用户展示数据和接收用户的输入。在Flask中,通常使用Jinja2模板引擎来渲染视图,Jinja2提供了模板继承、控制结构等功能,使得页面的设计更加灵活。

控制器(Controller)

控制器负责处理用户的请求和调度模型、视图之间的交互。在Flask中,可以使用路由(Route)来定义控制器,路由将URL映射到相应的视图函数,实现用户请求的响应。

在Flask中应用MVC

项目结构

一个典型的Flask项目通常具有以下目录结构:

project/
    ├─ app/
    │   ├─ models/
    │   ├─ views/
    │   └─ controllers/
    ├─ static/
    ├─ templates/
    └─ run.py
  • app/models/:存放模型类,用于处理数据的操作。
  • app/views/:存放视图模板,用于界面的呈现。
  • app/controllers/:存放控制器,用于处理用户请求和调度模型、视图之间的交互。
  • static/:存放静态文件,如CSS、JavaScript等。
  • templates/:存放Jinja2模板文件。
  • run.py:Flask应用的启动文件。

编写模型

app/models/目录下创建一个模型类,通过ORM库创建数据表和操作数据。以SQLAlchemy为例,创建一个用户模型:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(50), unique=True)

    def __repr__(self):
        return f'<User {self.username}>'

编写视图

templates/目录下创建一个Jinja2模板文件,用于呈现页面的内容。以一个简单的用户列表页面为例,创建一个users.html文件:

<!DOCTYPE html>
<html>
<head>
    <title>User List</title>
</head>
<body>
    <h1>User List</h1>
    <ul>
        {% for user in users %}
            <li>{{ user.username }}</li>
        {% endfor %}
    </ul>
</body>
</html>

编写控制器

app/controllers/目录下创建一个控制器,定义视图函数和路由。以一个用户列表页面为例,创建一个user_controller.py文件:

from flask import render_template
from app.models import User

def user_list():
    users = User.query.all()
    return render_template('users.html', users=users)

run.py文件中导入控制器,并定义路由:

from flask import Flask
from app.controllers.user_controller import user_list
from app.models import db

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

@app.route('/')
def index():
    return user_list()

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

运行示例

  1. 安装Flask和SQLAlchemy库:
pip install Flask Flask-SQLAlchemy
  1. 创建数据库表:
from run import db
db.create_all()
  1. 运行Flask应用:
python run.py

通过浏览器访问http://localhost:5000/,即可查看用户列表页面。

总结

通过以上示例,我们了解了如何在Flask应用中应用MVC模式,将应用分为模型、视图和控制器三个部分,实现数据的存储、页面的展示和用户请求的处理。MVC模式能够使项目结构更加清晰,代码更加具有可维护性和可扩展性,是开发Web应用的良好实践。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程