PythonStyle MVC 开发框架

server/2025/2/5 7:33:30/

在 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 = modelself.view = viewdef 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 modelsclass 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 Bookdef 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 = titleself.author = authorbooks = [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 应用。


http://www.ppmy.cn/server/165100.html

相关文章

洛谷P1835 素数密度

素数密度 题目背景 UPD: 2024.8.12&#xff1a;加入一组 Hack 数据。 题目描述 给定 L , R L,R L,R&#xff0c;请计算区间 [ L , R ] [L,R] [L,R] 中素数的个数。 1 ≤ L ≤ R < 2 31 1\leq L\leq R < 2^{31} 1≤L≤R<231&#xff0c; R − L ≤ 1 0 6 R-L\le…

Go语言指针的解引用和间接引用

在 Go 语言中&#xff0c;"解引用"和"间接引用"是与指针相关的概念。 解引用 (Dereferencing)&#xff1a; 解引用是指通过指针访问它所指向的变量的值。在 Go 中&#xff0c;使用星号&#xff08;*&#xff09;来解引用一个指针。 例如&#xff1a; v…

简单理解精确率(Precision)和召回率(Recall)

温故而知新&#xff0c;可以为师矣&#xff01; 一、参考资料 分类问题的评价指标&#xff1a;多分类【Precision、 micro-P、macro-P】、【Recall、micro-R、macro-R】、【F1、 micro-F1、macro-F1】 目标检测评估指标mAP&#xff1a;从Precision,Recall,到AP50-95【未完待续…

Python零基础快速入门课程,自带在线运行环境

Python零基础入门教程 编译器地址: Python在线编译器 课程目录: Python简介 Python是一种简单易学、功能强大的编程语言。它具有高效的数据结构,能够简单有效地实现面向对象编程。 Python的优点: 简单易学,所有人都可以零基础入门开源免费,有丰富的免费学习课程跨平台…

【数据结构】(4) 线性表 List

一、什么是线性表 线性表就是 n 个相同类型元素的有限序列&#xff0c;每一个元素只有一个前驱和后继&#xff08;除了第一个和最后一个元素&#xff09;。 数据结构中&#xff0c;常见的线性表有&#xff1a;顺序表、链表、栈、队列。 二、什么是 List List 是 Java 中的线性…

docker gitlab arm64 版本安装部署

前言&#xff1a; 使用RK3588 部署gitlab 平台作为个人或小型团队办公代码版本使用 1. docker 安装 sudo apt install docker* 2. 获取arm版本的gitlab GitHub - zengxs/gitlab-arm64: GitLab docker image (CE & EE) for arm64 git clone https://github.com/zengxs…

具身智能-强化学习-强化学习基础-马尔可夫

文章目录 参考强化学习基础强化学习特点reward函数两种强化学习两种策略&#xff1a;探索&#xff08;Exploration&#xff09; vs. 利用&#xff08;Exploitation&#xff09;gym库的使用 马尔可夫马尔可夫过程马尔可夫奖励过程&#xff08;Markov Reward Process, MRP&#x…

浏览器同源策略:从“源”到安全限制的全面解析

一、什么是“源”&#xff08;Origin&#xff09;&#xff1f; 在浏览器中&#xff0c;“源”是 Web 安全的核心概念。一个“源”由三部分组成&#xff1a; 协议&#xff08;Protocol&#xff09;&#xff1a;如 http://、https://、ftp:// 域名&#xff08;Host&#xff09;…