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 应用。

相关推荐
William_cl1 天前
【C# OOP 入门到精通】从基础概念到 MVC 实战(含 SOLID 原则与完整代码)
开发语言·c#·mvc
William_cl3 天前
一、前置基础(MVC学习前提)_核心特性_【C# 泛型入门】为什么说 List<T>是程序员的 “万能收纳盒“?避坑指南在此
学习·c#·mvc
程序员小凯4 天前
Spring MVC 分布式事务与数据一致性教程
分布式·spring·mvc
艾菜籽4 天前
SpringMVC练习:加法计算器与登录
java·spring boot·spring·mvc
程序员小凯4 天前
Spring MVC 多租户架构与数据隔离教程
spring·架构·mvc
艾菜籽5 天前
Spring Web MVC入门补充1
java·后端·spring·mvc
艾菜籽5 天前
Spring MVC入门补充2
java·spring·mvc
风兮w5 天前
MVC、MVP和MVVM的区别
mvc
蓝天智能6 天前
QT MVC中Model的特点及使用注意事项
qt·mvc
低音钢琴6 天前
【SpringBoot从初学者到专家的成长15】MVC、Spring MVC与Spring Boot:理解其差异与联系
spring boot·spring·mvc