Python设计模式之MVC模式简单示例

 更新时间:2018年01月10日 10:38:51   作者:李自泰  
这篇文章主要介绍了Python设计模式之MVC模式,简单介绍了MVC模式的概念、原理,并结合实例形式给出了Python实现与使用MVC模式的相关操作技巧,需要的朋友可以参考下

本文实例讲述了Python设计模式之MVC模式。分享给大家供大家参考,具体如下:

一.简单介绍

mvc模式  the  model-view-controller pattern

mvc模式是一个运用在软件工程中的设计模式。mvc模式脱离了以前简单的web服务设计逻辑,将开发,测试和维护分离。在MVC模式中,应用被分解为相互作用的模块,模型,视图,控制。目的在于分离输入(control),处理逻辑(model),输出格式(view)。

简单的理解:

1. 控制模块用于获取用户输入,并将模型与视图建立联系
2. 模型主要是从存储区获取数据
3. 视图用于展示给用户,从模型获取的数据

具体细节:

控制模块:可以被看作是一个介于用户,处理(model),显示(view)之间的中间人。它是用户请求的入口,也是应用处理的入口。控制模块接受用户输入,解析,决定哪一个model和view参与处理,因此,它决定了针对用户请求,选择何种view和model。

模型模块:处理业务的应用程序,model操作数据库,比如插入,更新,删除。每个模型会提供固定类型的数据给控制模块,另一方面,控制模块可以调用模型的不同方法处理数据,并将处理后的结果返回给视图模型

视图模块:主要用来显示,通过控制模块获取模型模块处理后的数据,并进行格式化的显示。通过控制模块选择view并显示反馈给用户。view模型的选择是基于模型模块的l选择和用户配置等等。

二.简单的例子

测试管理系统用来查询错误列表

情景描述:

如果用户查询一个特定的错误,测试管理系统以某种格式显示这个错误的描述
如果用户搜索相关错误的关键值,测试管理系统显示所有相关的错误列表

创建SQLite 数据库,库名TMS,并创建一个表

ID Component Summary
1 XYZ File doesn't get deleted
2 XYZ Registry doesn't get created
3 ABC Wrong title gets displayed

代码如下:

#mvc.py
import sqlite4
import types
class DefectModel:
  def getDefectList(self, component):
    query = "select ID from defects where Component= '%s' " % component
    defectlist = self._dbselect(query)
    list = []
    for row in defectlist:
      list.append(row[0])
    return list
  def getSummary(self, id):
    query = "select summary from defects where ID='%d'" % id
    summary = self._dbselect(query)
    for row in summary:
      return row[0]
  def _dbselect(self, query):
    connection = sqlite3.connect('TMS')
    cursorObj = connection.cursor()
    results = cursorObj.execute(query)
    connection.commit()
    cursorObj.close()
    return results
class DefectView:
  def summary(self, summary, defectid):
    print "#### Defect Summary for defect# %d####%s\n" %(defectid, summary)
  def defectList(self, list, category):
    print "#### Defect List for %s ####\n" % category
    for defect in list:
      print defect
class Controller:
  def __init__(self):
    pass
  def getDefectSummary(self, defectid):
    model = DefectModel()
    view = DefectView()
    summary_data = model.getSummary(defectid)
    return view.summary(summary_data, defectid)
  def getDefectList(self, component):
    model = DefectModel()
    view = DefectView()
    defectlist_data = model.getDefectList(component)
    return view.defectList(defectlist_data, component)

使用模块:

import mvc
controller = mvc.Controller()
print controller.getDefectSummary(2)
print controller.getDefectList('ABC')

总结:通过此mvc设计方法,看到了解耦的好处,个个模块独立,相互不影响,也可以增加模块。方便组合,方便拆卸。好好体会吧!

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • PyTorch模型保存与加载实例详解

    PyTorch模型保存与加载实例详解

    大家都知道pytorch的模型和参数是分开的,可以分别保存或加载模型和参数,这篇文章主要给大家介绍了关于PyTorch模型保存与加载的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Python脚本实现抓取指定网站上的所有图片

    Python脚本实现抓取指定网站上的所有图片

    对于开发者、数据分析师以及研究人员而言,从网页中提取有价值的信息是一项至关重要的技能,本文将详细介绍如何使用Python编写一个脚本来自动抓取指定网站上的所有图片,需要的可以参考下
    2024-10-10
  • 使用python创建极坐标平面的示例代码

    使用python创建极坐标平面的示例代码

    PolarPlane 是 Manim(一个用于数学动画的Python库)中的一个类,用于创建极坐标平面,与笛卡尔坐标系不同,极坐标系是基于角度和半径来定位点的,本文就给大家介绍如何用python创建极坐标平面,需要的朋友可以参考下
    2024-08-08
  • Python 语言实现六大查找算法

    Python 语言实现六大查找算法

    本文给大家分享Python 语言实现六大查找算法,针对每种算法通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-06-06
  • python实现简易聊天对话框

    python实现简易聊天对话框

    这篇文章主要为大家详细介绍了python实现简易聊天对话框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Python PyWebIO开发Web应用实例探究

    Python PyWebIO开发Web应用实例探究

    这篇文章主要为大家介绍了Python PyWebIO开发Web应用实例探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 在Python中使用Neo4j数据库的教程

    在Python中使用Neo4j数据库的教程

    这篇文章主要介绍了在Python中使用Neo4j数据库的教程,Neo4j是一个具有一定人气的非关系型的数据库,需要的朋友可以参考下
    2015-04-04
  • Python实现删除Android工程中的冗余字符串

    Python实现删除Android工程中的冗余字符串

    这篇文章主要介绍了Python实现删除Android工程中的冗余字符串,本文实现的是删除Android资源(语言)国际化机制中的一些冗余字符串,需要的朋友可以参考下
    2015-01-01
  • Python操作MySQL模拟银行转账

    Python操作MySQL模拟银行转账

    这篇文章主要为大家详细介绍了Python操作MySQL模拟银行转账,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • 深入探索Django中间件的应用场景

    深入探索Django中间件的应用场景

    Django中间件是一种可插拔的应用程序组件,可在请求和响应处理过程中修改Django的行为。中间件可用于处理请求、响应、异常等,还可用于实现身份验证、缓存、性能监控等常用功能。通过深入探索中间件的应用场景,可以提高Django应用程序的可扩展性和灵活性
    2023-05-05

最新评论