web框架-MVC和MTV

1、MVC
简单地说,就是对文件夹的一个分类,职责的一个划分。
Model: 数据库操作
View: 模板文件
Controller: 业务逻辑的处理
将整个项目,划分成上述三部分,这样整个项目的结构看上去就非常清晰。
下面举一个非常简单的例子:
在这里插入图片描述
上面的图片就是例子项目的所有构成,s3.py文件是主程序,来看看s3.py干了什么,

from wsgiref.simple_server import make_server

from Controller import account

url_l = {
    '/date': account.handle_date,
    '/index': account.handle_index,
}

def runServer(environ, start_response):
    # environ 客户端发来的所有数据
    # start_response 封装要返回给用户的数据,相应头状态
    start_response('200 OK', [('Content-Type', 'text/html')])
    # current_url = environ['PATH_INFO']
    # if current_url == "/index":
    #     return ['<h1>Hello, index!</h1>'.encode('utf-8')]
    # elif current_url == "/date":
    #     return ['<h1>Hello, date!</h1>'.encode('utf-8')]
    # else:
    #     return ['<h1>404</h1>'.encode('utf-8')]
    current_url = None
    current_url = environ['PATH_INFO'] # 获取url的后缀
    if current_url in url_l:
        func = url_l[current_url] # 根据后缀,调用不同的业务逻辑
        if func:
            return func()
        else:
            return ['<h1>404</h1>'.encode('utf-8')]
    else:
        return ['<h1>404</h1>'.encode('utf-8')]

if __name__ == "__main__":
    httpd = make_server('', 8000, runServer)
    print('Serving HTTP on port 8000...')
    httpd.serve_forever()

s3.py是所有web socket服务端最基本最简单的实现方式,启动服务,监听客户端有没有请求。业务逻辑的实现通过导入Controller文件夹下的account.py文件,使得整个主函数看上去很简洁。下面来看看account干了什么,

import time

def handle_date():
    v = str(time.time())
    f = open("/home/xue/python_learn/day18/View/index.html", mode="rb")
    data = f.read()
    f.close()
    data = data.replace(b'@uuuuu', v.encode('utf-8')) # 这里我们就可以去数据库里提取数据,进行操作
    return [data, ]

def handle_index():
    return ['<h1>Hello, index!</h1>'.encode('utf-8')]

account.py只有两个函数,分别处理网页客户端不同url后缀的请求,返回不同的网站,在这里还可以去调用数据库,这样就实现了一个最简单的MVC框架了。

2、MTV
和MVC类似,只不过文件夹的名字发生了变化。
Model: 数据库操作
Template: 模板文件
View: 业务处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值