1Python全栈之路系列Web框架介绍
Python全栈之路系列之Web框架介绍
所有的语言Web框架
本质其实就是起一个socket
服务端,监听一个端口,然后运行起来
Web框架
包含两部分,一部分是socket
,另外一部分是业务的逻辑处理,根据请求的不同做不同的处理
Python的Web框架
分成了两类,
即包含socket也包含业务逻辑处理的(tornado)
不包含socket(框架本身通过第三方模块实现socket)只包含业务逻辑处理(django,Flask)
WSGI
的全称是Web Server Gateway Interface
,翻译过来就是Web服务器网关接口。具体的来说,WSGI是一个规范,定义了Web服务器如何与Python应用程序进行交互,使得使用Python写的Web应用程序可以和Web服务器对接起来。WSGI一开始是在PEP-0333中定义的,最新版本是在Python的PEP-3333定义的。
下面实例的代码中RunServer()
函数就是符合WSGI标准的一个HTTP处理函数,它接收两个参数:
environ
:一个包含所有HTTP请求信息的dict对象;start_response
:一个发送HTTP响应的函数;
通过wsgiref
模块实现一个自定义的web框架
代码的大概逻辑就是: 定义了两个函数index()
和manage()
,如果用户访问的URL是127.0.0.1:8000/index
就返回<h1>/index</h1>
,如果用户访问的是127.0.0.1:8000/manage
就返回/manage
,如果访问其他页面就返回404
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#!/usr/bin/python2
# _*_coding:utf-8 _*_
from wsgiref.simple_server import make_server
def index(arg):
# 返回一个含有html代码的字符串
return "<h1>%s</h1>" % (arg)
def manage(arg):
return arg
URLS = {
"/index" : index,
"/manage" : manage,
}
def RunServer(environ, start_response):
start_response( '200 OK' , [( 'Content-Type' , 'text/html' )])
url = environ[ 'PATH_INFO' ]
if url in URLS.keys():
func_name = URLS[url]
ret = func_name(url)
else :
ret = "404"
return ret
if __name__ = = '__main__' :
httpd = make_server('', 8000 , RunServer)
httpd.serve_forever()
|
通过本机的curl命令去访问测试
1
2
3
4
5
6
|
ansheng@Darker:~$ curl 127.0 . 0.1 : 8000 / index
<h1> / index< / h1>
ansheng@Darker:~$ curl 127.0 . 0.1 : 8000 / asdasd
404
ansheng@Darker:~$ curl 127.0 . 0.1 : 8000 / manage
/ manage
|
无论多么复杂的Web应用程序,入口都是一个WSGI
处理函数。HTTP请求的所有输入信息都可以通过environ
获得,HTTP响应的输出都可以通过start_response()
加上函数返回值作为Body,复杂的Web应用程序,光靠一个WSGI函数来处理还是太底层了,我们需要在WSGI之上再抽象出Web框架,进一步简化Web开发。
MVC and MTV
MVC模式就是架构模式的一种,MVC模式的目的是实作一种动态的程式设计,使后续对程式的修改和扩充功能简化,并且使程式某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程式结构更加直觉。
软体系统通过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组:
控制器Controller
- 负责转发请求,对请求进行处理;视图View
- 介面设计人员进行图形介面设计;模型Model
- 程式设计师编写程式应有的功能(实作演算法等等)、资料库专家进行资料管理和资料库设计(可以实作具体的功能);
MVC中的M
是代表MODLE层
,V
代表VIEW
层,C代表Contrl
层.
MTV中的M
是代表MODLE层
,T
代表Template(模板层)
,V
代表VIEW
层.
1Python全栈之路系列Web框架介绍相关推荐
- 1Python全栈之路系列之MySQL数据库基本操作
Python全栈之路系列之MySQL数据库基本操作 MySQL数据库介绍 MySQL是一种快速易用的关系型数据库管理系统(RDBMS),很多企业都在使用它来构建自己的数据库. MySQL由一家瑞典公司 ...
- 8Python全栈之路系列之Django Cookie 与Sessi
Python全栈之路系列之Django Cookie与Sessi Cookies cookies是浏览器为Web服务器存储的一小段信息,每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的coo ...
- 4Python全栈之路系列之Django模型
Python全栈之路系列之Django模型 MTV开发模式 把数据存取逻辑.业务逻辑和表现逻辑组合在一起的概念有时被称为软件架构的Model-View-Controller(MVC)模式.在这个模式中 ...
- 2Python全栈之路系列之基于socket实现聊天机器人
Python全栈之路系列之基于socket实现聊天机器人 通过socket实现局域网内的聊天工具. service.py文件如下: #!/usr/bin/env python # _*_ coding ...
- 2Python全栈之路系列之MysQl基本数据类型
Python全栈之路系列之MySQL基本数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类: 数字类型 日期和时间类型 字符串类型 数字类 ...
- 5Python全栈之路系列之字符串格式化
Python全栈之路系列之字符串格式化 This PEP proposes a new system for built-in string formatting operations, intend ...
- 4python全栈之路系列之scrapy爬虫s
python全栈之路系列之scrapy爬虫 An open source and collaborative framework for extracting the data you need fr ...
- 7Python全栈之路系列之Django表单
Python全栈之路系列之Django表单 从Request对象中获取数据 HttpRequest对象包含当前请求URL的一些信息: 熟悉/方法 描述 例如 request.path 除域名以外的请求 ...
- Python全栈之路系列之数字数据类型
上篇文章中我们简单的体验了Python语言基本概念与语法,那么在继续深入下去的过程中,不妨先学习几个常见的Python内置数据类型?这也是大部分Python教科书的学习目录,由浅至深,慢慢深入. Py ...
最新文章
- C#中Base64之编码,解码方法
- c语言考试经典编程题目及答案,经典练习C语言编程的题目及答案整理
- 升级oracle spu,Oracle 2017改变:新补丁更新(RU和RUR),新的版本(Release 18和19)
- Oracle等待事件之Latch Free
- 【计算机网络】计算机网络 OSI 参考模型 与 TCP/IP 参考模型 对比
- 6、MySQL查看和修改事务隔离级别
- Android高效编程注意事项
- Sqlit--学习教程(基本操作1)
- 3V升压5V芯片,3V升压5V的电路图
- 互联网公司在三四线城市的竞争中的聪(sang)明(xin)才(bing)智(kuang)
- MD5、SHA1、SHA256、SHA512
- ArcGIS中WGS84转为西安80(无自带转换参数的坐标系转换)
- 从安卓recovery 的 backup 备份数据中手动恢复 通讯录、短信,或者其他软件中的信息的方法
- __ffs 源码分析
- 如何实现今日头条跳转到微信?
- Adobe Audition生成正弦波音频
- C语言指针类型的意义
- 弊润落幅跨越60%的无5野婆司
- dolphinscheduler_sql_调用时间参数
- 直播平台对企业的作用有哪些