python web 框架的本质

WSGI(Web Server Gateway Interface)是一种规范,它定义了使用python编写的web app与web server之间接口格式,实现web app与web server间的解耦。

python标准库提供的独立WSGI服务器称为wsgiref。

 1 from wsgiref.simple_server import make_server
 2
 3
 4 def RunServer(environ, start_response):
 5     start_response(‘200 OK‘, [(‘Content-Type‘, ‘text/html‘)])
 6     return [bytes(‘<h1>Hello, web!</h1>‘, encoding=‘utf-8‘), ]
 7
 8
 9 if __name__ == ‘__main__‘:
10     httpd = make_server(‘‘, 8000, RunServer)
11     print("Serving HTTP on port 8000...")
12     httpd.serve_forever()

详解environ参数的由来

简单的从用户输入中获取url,并处理请求

 1 #!usr/bin/env python
 2 #-*- coding:utf-8 -*-
 3
 4 # wsgiref遵循了WSGI规范,内部帮我们实现了socket,
 5 from wsgiref.simple_server import make_server
 6
 7 def new():
 8     f=open("reg.html","r")
 9     data=f.read()
10     f.close()
11     return data
12 def index():
13     return "index"
14 URLS={
15     "/new":new,
16     "/index":index,
17 }
18 def RunServer(environ, start_response):
19     start_response(‘200 OK‘, [(‘Content-Type‘, ‘text/html‘)])
20     url=environ[‘PATH_INFO‘]
21     if url=="/index":
22         ret=index()
23     elif:url=="/new"
24         ret=new()
25     else:
26         ret="404"
27     return ret
28 if __name__ == ‘__main__‘:
29     httpd = make_server(‘‘, 8000, RunServer)
30     httpd.serve_forever()

这样写业务逻辑非常的不好,一旦url很多,就非常的麻烦,改进如下:

 1 #!usr/bin/env python
 2 #-*- coding:utf-8 -*-
 3
 4 # wsgiref遵循了WSGI规范,内部帮我们实现了socket,
 5 from wsgiref.simple_server import make_server
 6
 7 def new():
 8     f=open("reg.html","r")
 9     data=f.read()
10     f.close()
11     return data
12 def index():
13     return "index"
14 URLS={
15     "/new":new,
16     "/index":index,
17 }
18 def RunServer(environ, start_response):
19     start_response(‘200 OK‘, [(‘Content-Type‘, ‘text/html‘)])
20     url=environ[‘PATH_INFO‘]
21     if url in URLS.keys():
22         func_name=URLS[url]
23         ret=func_name()
24     else:
25         ret="404"
26     return ret
27 if __name__ == ‘__main__‘:
28     httpd = make_server(‘‘, 8000, RunServer)
29     httpd.serve_forever()

为了进入步管理web框架的各个文件,对文件进行了处理

其实 MVC 和MTV思想都是对各个文件进行分类处理,并执行各个的任务

MVC

Models : 数据相关操作

Views   : 模版HTML文件

Controllers 业务逻辑

MTV

Models : 数据相关操作

Temp;ates  : 模版HTML文件

Views业务逻辑

时间: 2024-12-28 10:13:38

python web 框架的本质的相关文章

Python3 之 Web 框架:web框架的本质

各位,学Python 的同志,相信对 Django .Flask.等不会陌生,这些就是Python语言的web 框架. 那么问题来了,web 服务器又是什么,他和web框架有什么关系?他们又是如何工作的,分别处于什么位置?还有有时候有人会把HTTP服务器叫做web服务器,这是为何?这种说法对吗?带着这些疑问,听我慢慢道来- 一.什么是 Web 服务器 平时我们都是通过浏览器(比如Chrome,Firefox等)上网的,当我们在浏览器的地址栏里输入地址后,会得到一个网页. 这个网页就是 web 服

web框架的本质

一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响应,按照http协议的请求协议发送请求,服务端按照http协议的响应协议来响应请求,这样的网络通信,我们就可以自己实现Web框架了. 通过对socket的学习,我们知道网络通信,我们完全可以自己写了,因为socket就是做网络通信用的,下面我们就基于socket来自己实现一个web框架,写一个web

Django基础一之web框架的本质

Django基础一之web框架的本质 一 web框架的本质及自定义web框架 ? 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响应,按照http协议的请求协议发送请求,服务端按照http协议的响应协议来响应请求,这样的网络通信,我们就可以自己实现Web框架了. 通过对socket的学习,我们知道网络通信,我们完全可以自己写了,因为socket就是做网络通信用的,下面我们就基于sock

Python web 框架 Sanci如何使用?

本文和大家分享的主要是python web 框架 Sanci 相关内容,一起来看看吧,希望对大家学习python有所帮助. Sanic 是一个和类Flask 的基于Python3.5+的web框架,它编写的代码速度特别快. 除了像Flask 以外,Sanic 还支持以异步请求的方式处理请求.这意味着你可以使用新的 async/await 语法,编写非阻塞的快速的代码. 既然它说速度特别快,我们先看下官方提供的 基准测试结果. Sanic基准测试 这个测试的程序运行在 AWS 实例上,系统是Ubu

python web框架分析和学习篇_彭友

分析篇: 刚好到网上搜到了一篇<浅谈Python web框架>,里面系统的分析了五种主流的Python框架,现在python的主流框架有Django.Pylons&TurboGears&repose.bfg.Tornado&web.py&Bottle&Flask和Quixote.它从宏观角度分析了这五种框架的优劣,看完之后我们决定选择Django,因为: Django: 概述:可谓是python框架里面最大的一家,它是里面文档最完善.市场占有率最高.招聘

Python Web框架之Django初探(一)

Python Web框架之Django初探 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的框架模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件.并于2005年7月在BSD许可证下发布.这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的. Django可以运行在Apache,Nginx上,也可以运行在支持WSGI,FastCGI的服务器上.支持多种数据

微型 Python Web 框架 Bottle

Bottle 是一个非常小巧但高效的微型 Python Web 框架, 它被设计为仅仅只有一个文件的Python模块, 并且除Python标准库外, 它不依赖于任何第三方模块. 路由(Routing): 将请求映射到函数, 可以创建十分优雅的 URL 模板(Templates): Pythonic 并且快速的 Python 内置模板引擎, 同时还支持 mako, jinja2, cheetah 等第三方模板引擎 工具集(Utilites): 快速的读取 form 数据, 上传文件, 访问 coo

浅谈五大Python Web框架

http://www.csdn.net/article/2011-02-17/292058 导读:作者飞龙写了一篇<浅谈Python Web框架>,文中他介绍了几个Python Web框架和自己对选择框架的分析.在他看来,用Django来快速开发一些Web运用是很不错的选择.以下是文章内容: 说到Web Framework,Ruby的世界Rails一统江湖,而Python则是一个百花齐放的世界,各种micro-framework.framework不可胜数,不完全列表见: http://wik

异步非阻塞IO的Python Web框架--Tornado

Tornado的全称是Torado Web Server,从名字上就可知它可用作Web服务器,但同时它也是一个Python Web的开发框架.最初是在FriendFeed公司的网站上使用,FaceBook收购之后便进行了开源. 作为Web框架,是一个轻量级的Web框架,类似于另一个Python web 框架Web.py,其拥有异步非阻塞IO的处理方式. 作为Web服务器,Tornado有较为出色的抗负载能力,官方用nginx反向代理的方式部署Tornado和其它Python web应用框架进行对