PythonStyle MVC 开发框架

在 Python 中,MVC(Model - View - Controller,模型 - 视图 - 控制器)是一种常见的软件设计模式,它将应用程序分为三个主要部分,各自承担不同的职责,以提高代码的可维护性、可扩展性和可测试性。下面为你详细介绍 Python 中 MVC 模式的概念、实现示例及相关框架。

概念

  • 模型(Model):负责处理数据和业务逻辑,例如与数据库交互、进行数据计算等。
  • 视图(View):负责呈现数据给用户,例如网页、图形界面等。
  • 控制器(Controller):负责接收用户的输入,调用模型进行相应的处理,并选择合适的视图来显示结果。

简单的 MVC 实现示例

收起

python

# 模型(Model)
class Model:
    def __init__(self):
        self.data = "Hello, MVC!"

    def get_data(self):
        return self.data


# 视图(View)
class View:
    def display(self, data):
        print(f"Displaying data: {data}")


# 控制器(Controller)
class Controller:
    def __init__(self, model, view):
        self.model = model
        self.view = view

    def update_view(self):
        data = self.model.get_data()
        self.view.display(data)


# 主程序
if __name__ == "__main__":
    model = Model()
    view = View()
    controller = Controller(model, view)
    controller.update_view()

解释

  • 模型(Model 类) :包含一个数据属性 data,并提供了一个方法 get_data 用于获取数据。
  • 视图(View 类) :包含一个方法 display,用于将接收到的数据显示给用户。
  • 控制器(Controller 类) :初始化时接收模型和视图的实例,update_view 方法调用模型的 get_data 方法获取数据,并将数据传递给视图的 display 方法进行显示。

基于 Python 的 MVC 框架

Django

Django 是一个功能强大的 Python Web 框架,虽然它采用的是 MTV(Model - Template - View)模式,但本质上与 MVC 模式类似。

  • 模型(Model):使用 Django 的 ORM(对象关系映射)来定义数据库模型。
  • 模板(Template):相当于 MVC 中的视图,用于呈现数据给用户。
  • 视图(View):相当于 MVC 中的控制器,负责处理用户请求,调用模型进行数据处理,并选择合适的模板进行渲染。

以下是一个简单的 Django 示例:

收起

python

# models.py
from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=100)


# views.py
from django.shortcuts import render
from .models import Book

def book_list(request):
    books = Book.objects.all()
    return render(request, 'book_list.html', {'books': books})


# book_list.html(模板文件)
<!DOCTYPE html>
<html>
<head>
    <title>Book List</title>
</head>
<body>
    <h1>Book List</h1>
    <ul>
        {% for book in books %}
            <li>{
  
  { book.title }} - {
  
  { book.author }}</li>
        {% endfor %}
    </ul>
</body>
</html>
Flask

Flask 是一个轻量级的 Python Web 框架,也可以使用 MVC 模式进行开发。

收起

python

from flask import Flask, render_template
app = Flask(__name__)

# 模型(模拟)
class Book:
    def __init__(self, title, author):
        self.title = title
        self.author = author

books = [
    Book("Python Crash Course", "Eric Matthes"),
    Book("Fluent Python", "Luciano Ramalho")
]

# 控制器(视图函数)
@app.route('/')
def book_list():
    return render_template('book_list.html', books=books)

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

# book_list.html(视图模板)
<!DOCTYPE html>
<html>
<head>
    <title>Book List</title>
</head>
<body>
    <h1>Book List</h1>
    <ul>
        {% for book in books %}
            <li>{
  
  { book.title }} - {
  
  { book.author }}</li>
        {% endfor %}
    </ul>
</body>
</html>

这些示例展示了如何在 Python 中使用 MVC 模式进行开发,无论是简单的脚本还是复杂的 Web 应用。

相关推荐
Future_yzx1 天前
Spring MVC学习——发送请求(@RequestMapping注解及请求参数绑定)
学习·spring·mvc
带刺的坐椅2 天前
无耳科技 Solon v3.0.7 发布(2025农历新年版)
java·spring·mvc·solon·aop
鱼骨不是鱼翅2 天前
Spring Web MVC基础第一篇
前端·spring·mvc
hong_zc2 天前
Spring MVC (三) —— 实战演练
java·spring·mvc
weixin_422778894 天前
spring mvc 创建restapi 笔记
笔记·spring·mvc
我要学编程(ಥ_ಥ)6 天前
初始JavaEE篇 —— Spring Web MVC入门(上)
spring boot·spring·java-ee·mvc
码农小灰6 天前
Spring MVC中HandlerInterceptor的作用及应用场景
java·spring boot·后端·spring·mvc
jyl_sh7 天前
使用Python和Qt6创建GUI应用程序--前言
python·mvc·客户端·pyside6
lixww.cn8 天前
ASP.NET Core MVC
c#·mvc·.netcore