首页 > 代码库 > python mvc设计模式(一)

python mvc设计模式(一)

一、代码组织(目录结构)

技术分享


二、mvc概述

MVC设计模式即MVC框架。

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑和数据显式分离的方法组织代码,将业务逻辑被聚集到一个部件里面,在界面和用户围绕数据的交互能被改进和个性化定制的同时而不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。


三、代码

1、数据

#coding:utf-8

‘‘‘模拟数据,当然,这是一个元组。也可以是任意的数据库,只要你喜欢‘‘‘

Quotes = (‘过放荡不羁的生活,容易得像顺水推舟,但是要结识良朋益友,却难如登天。 —— 巴尔扎克‘,
          ‘我读的书愈多,就愈亲近世界,愈明了生活的意义,愈觉得生活的重要。 —— 高尔基‘,
          ‘人生并不像火车要通过每个站似的经过每一个生活阶段。人生总是直向前行走,从不留下什么。 —— 刘易斯‘,
          ‘要永远觉得祖国的土地是稳固地在你脚下,要与集体一起生活,要记住,是集体教育了你。那一天你若和集体脱离,那便是末路的开始。 —— 奥斯特洛夫斯基‘,
          ‘在学校和生活中,工作的最重要的动力是工作中的乐趣,是工作获得结果时的乐趣以及对这个结果的社会价值的认识。 —— 爱因斯坦‘)

2、模型层
只有模型层才能够直接访问数据

#_*_coding:utf-8
from mvc.database.quote import Quotes #导入数据


class QuotesModel(object):
    ‘‘‘模型层‘‘‘
    def get_quote(self,index):
        ‘‘‘根据索引读取数据
        @parameter index 索引值
        ‘‘‘
        try:
            valve = Quotes[index]
        except IndexError as err:
            valve = ‘Not Found!‘
        return valve

3、控制器层

#_*_coding:utf-8
from mvc.model.quote_model import QuotesModel
from mvc.view.quoteterminalview import QuoteTerminalView

class QuoteterminalController(object):
    ‘‘‘控制器层‘‘‘
    def __init__(self):
        self.model = QuotesModel()
        self.view = QuoteTerminalView()

    def run(self):
        n = self.view.select_quote()
        try:
            index = int(n)
            quote = self.model.get_quote(index)
            self.view.show(quote)
        except ValueError as err:
            self.view.error(‘不合法的索引值‘)

4、视图层

#_*_coding:utf-8

class QuoteTerminalView(object):
    ‘‘‘视图层‘‘‘
    def show(self, quote):
        ‘‘‘显示查询结果
        @parameter quote 接收数据‘‘‘
        print(‘您查询到的名人名言是:%s‘ % (quote))

    def error(self, msg):
        ‘‘‘打印错误消息
        @msg msg 接收错误消息‘‘‘
        print("error: %s" % (msg))

    def select_quote(self):
        ‘‘‘读取用户的选择‘‘‘
        return raw_input("请输入编号进行查询:")

5、主程序

#_*_coding:utf-8
‘‘‘主程序‘‘‘
from mvc.controller.quoteterminalcontroller import QuoteterminalController

def mains():
    while True:
        controller = QuoteterminalController()
        controller.run()

if __name__ == ‘__main__‘:
    mains()










python mvc设计模式(一)