一、作者感悟

之前学了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相关推荐

  1. python竞赛_浅谈Python在信息学竞赛中的运用及Python的基本用法

    浅谈Python在信息学竞赛中的运用及Python的基本用法 前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在& ...

  2. python算法程序_浅谈python常用程序算法

    一.冒泡排序: 1.冒泡排序是将无序的数字排列成从小到大的有序组合: 过程:对相邻的两个元素进行比较,对不符合要求的数据进行交换,最后达到数据有序的过程. 规律: 1.冒泡排序的趟数时固定的:n-1 ...

  3. python相关职业-浅谈Python全栈开发工程师,让程序员都眼红的职业!

    原标题:浅谈Python全栈开发工程师,让程序员都眼红的职业! Python Python 的排名从去年开始就借助人工智能与独特的魅力持续上升,现在它已经成为了第一名. 与其它编程语言相比所占的优势 ...

  4. 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都是二维矩阵,中间点表示 ...

  5. ajax长轮询 java web_浅谈Websocket、Ajax轮询和长轮询(long polling)

    浅谈Websocket.Ajax轮询和长轮询(long p0ll) 最近看到了一些介绍Websocket的文章,觉得挺有用,所以在这里将自己的对其三者的理解记录一下. 1.什么是Websocket W ...

  6. 浅谈什么是MVC设计模式

    什么是MVC? MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分 ...

  7. 浅谈MVVM和MVC模式

    首先MVVM呢,我们可以理解为MVC的优化版,Angular就是基于MVC模式的框架,而VUE是基于MVVM模式的框架,是MVC模式的优化版,也是小白最容易上手的一个框架.  MVC模式: (Augl ...

  8. 浅谈python语言_浅谈Python语言基础知识点!

    一.Python 语言的简述 Python语言是一种解释型.面向对象的编程语言,是一种开源语言. Python属于动态类定义语言,也是一种强调类型语言. 二.Python 语言的特点 1.简单.高级 ...

  9. python财务报表分析-浅谈利用Python分析财报找到值得投资的好公司的想法

    17年12月份接触到了007战友林晓燕老师的不读财报不出局,才知道投资股票还有那么多门道,也了解到了MJ老师挑选股票的标准--五大关键数字力. 跟着林老师开始学习财报以来,老是觉得光靠人工来挑选符合& ...

最新文章

  1. fprintf()中的stderr解析
  2. vc+如何添加右键弹出菜单
  3. 我花了 8 小时,掌握了一下 Flutter | Flutter 中文站上线
  4. VForum 2008系列之六:分论坛视频-虚拟世界中的应用
  5. 【翻译】从Store生成Checkbox Group
  6. 作者:张鹏(1993-),男,国防科学技术大学并行与分布处理重点实验室硕士生...
  7. 分布式开发必须了解的Zookeeper的Leader选举机制(源码解析)
  8. python创建目录保存文件
  9. Active MQ 传输 ObjectMessage 异常
  10. maven更换阿里云源
  11. spring3: 表达式5.2 SpEL基础
  12. 转载:三种方式使得iOS应用能够在后台进行数据更新和下载
  13. 怎样正确做 Web 应用的压力测试?
  14. KNN算法实验-采用UCI的Iris数据集和DryBean数据集
  15. python下将图片合成pdf
  16. Android开发之小程序-秒表
  17. 好看的皮囊 · 也是大自然的杰作 · 全球高质量 · 美图 · 集中营 · 美女 · 2017-08-21期...
  18. YOLOv6:又快又准的目标检测框架开源啦
  19. UE4设置默认游戏模式和关卡
  20. 4万字【Python高级编程】保姆式教学,Python大厂高频面试题解析

热门文章

  1. NTU 课程笔记: 网络流
  2. Linux疑难杂症解决方案100篇(二十)-万字长文带你读懂正则表达式(建议收藏)
  3. 用Tableau画可调整的树状图(Tree Diagram)
  4. Java调用Matlab
  5. 数据挖掘系列(1)关联规则挖掘基本概念与Aprior算法
  6. Python3--有道音频下载
  7. Python编程基础:第三十五节 文件删除Delete a File
  8. 【LeetCode从零单排】No21.MergeTwoSortedLists
  9. Logistic Regression 模型简介
  10. jackson反序列化时忽略不需要的字段