python mvc web_浅谈python_web的MVC和MTV
一、作者感悟
之前学了java,可以简单的用ssm框架写点网页,后来入黑盒测试,自学了python,但说实话我更比较喜欢java那种规规矩矩,现在只是自己 写个脚本爬虫更多的会用python灵活
二、什么是MVC、MTV
python 的MVC和java的一样,分别是Model、View、Controller,也就是我们通常说的模型(model)-视图(view)-控制器(controller),分别对应着数据库、模板文件、业务处理。
MTV 分别是 Model、Template、View,分别对应的是数据库、模板文件、业务处理,python Django,用的就是MTV模式
三、初识python 的web流程
要知道代码的逻辑关系,和数据走向,这是我当时学java ssm框架时候心得,python 自学也从这句话开始.
WSGI(Web Server Gateway Interface),python标准库提供的独立WSGI服务器称为wsgiref。
from wsgiref.simple_server import make_server
def RunServer(environ, start_response):
#environ 客户发来的所有信息 environ['PATH_INFO']获取地址
#start_response 返回响应信息
start_response('200 OK',[('Content-Type', 'text/html')])
return ['
Python
'.encode('utf-8')]
if __name__ == '__main__':
httpd = make_server('',8000,RunServer)
httpd.serve_forever()
访问http://127.0.0.1:8000/,就能看到页面python
下一步要做的就是,有多个页面对应多个响应信息,environ是个字典,里面就有从客户端返回的地址信息environ['PATH_INFO']
from wsgiref.simple_server import make_server
def RunServer(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
current_url = environ['PATH_INFO']
#http://127.0.0.1:8000/index
if current_url == '/index':
return ['
welcome
'.encode('utf-8')]
#http://127.0.0.1:8000/data
elif current_url == '/data':
return ['
DATa
'.encode('utf-8')]
#必须写,因为客户端会给服务器端发送/favicon.ico 也就是ico图片
else:
return ['
404
'.encode('utf-8')]
if __name__ == '__main__':
httpd = make_server('',8000,RunServer)
httpd.serve_forever()
else 是必须写的因为客户端会返回/favicon.ico 这样我们的代码可以对他做判断,上面的代码其实我们可以吧 /index 和/data 写成函数如下:
from wsgiref.simple_server import make_server
#/data
def handle_data():
return ['
DATa
'.encode('utf-8')]
#/index
def handle_index():
return ['
welcome
'.encode('utf-8')]
def RunServer(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
current_url = environ['PATH_INFO']
#http://127.0.0.1:8000/index
if current_url == '/index':
return handle_data()
#http://127.0.0.1:8000/data
elif current_url == '/data':
#必须写,因为客户端会给服务器端发送/favicon.ico 也就是ico图片
return handle_index()
else:
return ['
404
'.encode('utf-8')]
if __name__ == '__main__':
httpd = make_server('',8000,RunServer)
httpd.serve_forever()
要是 20个网页我们就给写20个if判断么,这时候我们就可以用字典来解决这个问题
from wsgiref.simple_server import make_server
def handler_index():
return ['index'.encode('utf-8')]
def handler_data():
return ['data'.encode('utf-8')]
#用字典封装方法
URL_DICT = {
'/data' : handler_data,
'/index' : handler_index,
}
def RunServer(environ, start_response):
#environ 客户端返回
#start_response 服务器端响应给用户
start_response('200 OK',[('Concent-Type', 'text/html')])
current_url = environ['PATH_INFO']
fun = None
#先用变量接收
if current_url in URL_DICT:
fun = URL_DICT[current_url]
if fun:
return fun()
else:
return ['404'.encode('utf-8')]
if __name__ == '__main__':
httpd = make_server('',8000,RunServer)
httpd.serve_forever()
我的网页要是有很多内容怎么办,总不能在return 全拼出来吧,这时候就是MVC登场了
image.png
首先我们创建一个文件夹叫Controller,这里面是处理层,我们把刚才的写的响应给用户展示的方法放在account.py 文件
#用io 读的方法,去读取放在VIEW层的页面
def handler_index():
with open('/views/index','rb') as f:
data = f.read()
#替换html内容 data.replace()
f.close()
return [data,]
def handler_data():
return ['data'.encode('utf-8')]
我们创建一个VIEWS层,里面用来存放我们的html
我们在写一个入口
from wsgiref.simple_server import make_server
#却controller 读取我们的 方法
from Controller import account
#用字典封装方法
URL_DICT = {
'/data' : account.handler_data,
'/index' : account.handler_index,
}
def RunServer(environ, start_response):
#environ 客户端返回
#start_response 服务器端响应给用户
start_response('200 OK',[('Concent-Type', 'text/html')])
current_url = environ['PATH_INFO']
fun = None
#先用变量接收
if current_url in URL_DICT:
fun = URL_DICT[current_url]
if fun:
return fun()
else:
return ['404'.encode('utf-8')]
if __name__ == '__main__':
httpd = make_server('',8000,RunServer)
httpd.serve_forever()
python mvc web_浅谈python_web的MVC和MTV相关推荐
- python竞赛_浅谈Python在信息学竞赛中的运用及Python的基本用法
浅谈Python在信息学竞赛中的运用及Python的基本用法 前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在& ...
- python算法程序_浅谈python常用程序算法
一.冒泡排序: 1.冒泡排序是将无序的数字排列成从小到大的有序组合: 过程:对相邻的两个元素进行比较,对不符合要求的数据进行交换,最后达到数据有序的过程. 规律: 1.冒泡排序的趟数时固定的:n-1 ...
- python相关职业-浅谈Python全栈开发工程师,让程序员都眼红的职业!
原标题:浅谈Python全栈开发工程师,让程序员都眼红的职业! Python Python 的排名从去年开始就借助人工智能与独特的魅力持续上升,现在它已经成为了第一名. 与其它编程语言相比所占的优势 ...
- python的matmul_浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
概述 在使用keras中的keras.backend.batch_dot和tf.matmul实现功能其实是一样的智能矩阵乘法,比如A,B,C,D,E,F,G,H,I,J,K,L都是二维矩阵,中间点表示 ...
- ajax长轮询 java web_浅谈Websocket、Ajax轮询和长轮询(long polling)
浅谈Websocket.Ajax轮询和长轮询(long p0ll) 最近看到了一些介绍Websocket的文章,觉得挺有用,所以在这里将自己的对其三者的理解记录一下. 1.什么是Websocket W ...
- 浅谈什么是MVC设计模式
什么是MVC? MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分 ...
- 浅谈MVVM和MVC模式
首先MVVM呢,我们可以理解为MVC的优化版,Angular就是基于MVC模式的框架,而VUE是基于MVVM模式的框架,是MVC模式的优化版,也是小白最容易上手的一个框架. MVC模式: (Augl ...
- 浅谈python语言_浅谈Python语言基础知识点!
一.Python 语言的简述 Python语言是一种解释型.面向对象的编程语言,是一种开源语言. Python属于动态类定义语言,也是一种强调类型语言. 二.Python 语言的特点 1.简单.高级 ...
- python财务报表分析-浅谈利用Python分析财报找到值得投资的好公司的想法
17年12月份接触到了007战友林晓燕老师的不读财报不出局,才知道投资股票还有那么多门道,也了解到了MJ老师挑选股票的标准--五大关键数字力. 跟着林老师开始学习财报以来,老是觉得光靠人工来挑选符合& ...
最新文章
- fprintf()中的stderr解析
- vc+如何添加右键弹出菜单
- 我花了 8 小时,掌握了一下 Flutter | Flutter 中文站上线
- VForum 2008系列之六:分论坛视频-虚拟世界中的应用
- 【翻译】从Store生成Checkbox Group
- 作者:张鹏(1993-),男,国防科学技术大学并行与分布处理重点实验室硕士生...
- 分布式开发必须了解的Zookeeper的Leader选举机制(源码解析)
- python创建目录保存文件
- Active MQ 传输 ObjectMessage 异常
- maven更换阿里云源
- spring3: 表达式5.2 SpEL基础
- 转载:三种方式使得iOS应用能够在后台进行数据更新和下载
- 怎样正确做 Web 应用的压力测试?
- KNN算法实验-采用UCI的Iris数据集和DryBean数据集
- python下将图片合成pdf
- Android开发之小程序-秒表
- 好看的皮囊 · 也是大自然的杰作 · 全球高质量 · 美图 · 集中营 · 美女 · 2017-08-21期...
- YOLOv6:又快又准的目标检测框架开源啦
- UE4设置默认游戏模式和关卡
- 4万字【Python高级编程】保姆式教学,Python大厂高频面试题解析