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

相关推荐
_waylau9 小时前
“Java+AI全栈工程师”问答01:Spring MVC登录页面错误提示
java·开发语言·vue.js·后端·spring·mvc·springcloud
Cyan_RA910 小时前
SpringMVC 视图和视图解析器 万字详解
java·spring·mvc·springmvc·请求重定向·modelandview·视图解析器
盖丽男2 天前
彻底搞懂:前端MVVM、后端MVC、DDD极致面向对象的区别与落地真相
前端·mvc
Cyan_RA97 天前
SpringMVC 请求数据绑定与参数映射 详解
java·后端·spring·mvc·springmvc·映射请求数据
Cyan_RA99 天前
SpringMVC REST 详解
java·spring·mvc·springmvc·restful·jquery·jsp
budingxiaomoli12 天前
Spring Web MVC 知识总结
spring·mvc
虾米Life13 天前
MVC与MVVM 架构
架构·mvc·mvvm
笛卡尔的心跳15 天前
Spring MVC 注解
java·spring·mvc
小松加哲16 天前
Spring MVC 核心原理全解析
java·spring·mvc
那个失眠的夜16 天前
RESTful 语法规范 核心注解详解
java·spring·mvc·mybatis