1Python全栈之路系列Web框架介绍

Python全栈之路系列之Web框架介绍

所有的语言Web框架本质其实就是起一个socket服务端,监听一个端口,然后运行起来

Web框架包含两部分,一部分是socket,另外一部分是业务的逻辑处理,根据请求的不同做不同的处理



Python的Web框架分成了两类,

  1. 即包含socket也包含业务逻辑处理的(tornado)
  2. 不包含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处理函数,它接收两个参数:

  1. environ:一个包含所有HTTP请求信息的dict对象;
  2. 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

#!/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命令去访问测试

[email protected]:~$ curl 127.0.0.1:8000/index
<h1>/index</h1>
[email protected]:~$ curl 127.0.0.1:8000/asdasd
404
[email protected]:~$ 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模式的目的是实作一种动态的程式设计,使后续对程式的修改和扩充功能简化,并且使程式某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程式结构更加直觉。

软体系统通过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组:

  1. 控制器Controller - 负责转发请求,对请求进行处理;
  2. 视图View - 介面设计人员进行图形介面设计;
  3. 模型Model - 程式设计师编写程式应有的功能(实作演算法等等)、资料库专家进行资料管理和资料库设计(可以实作具体的功能);

MVC中的M是代表MODLE层,V代表VIEW层,C代表Contrl层.
MTV中的M是代表MODLE层,T代表Template(模板层),V代表VIEW层.

#Python全栈之路

时间: 2024-09-28 06:02:17

1Python全栈之路系列Web框架介绍的相关文章

1Python全栈之路系列之Tornado Web框架

Python全栈之路系列之Tornado Web框架 Tornado是一个Python web框架和异步网络库,起初由FriendFeed开发. 通过使用非阻塞网络I/O,Tornado可以支撑上万级的连接,处理长连接, WebSockets,和其他需要与每个用户保持长久连接的应用. Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快.得利于其 非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数

1Python全栈之路系列之Django初体验

Python全栈之路系列之Django初体验 Django不得不说在Python中是一个非常强大的全栈框架,而且入门也比较简单,只要你学完了基本的Django知识,接着再做一两个项目,不大不小就成,然后你再去学其它的框架你会发现,在那些小而美的框架中,你学起来将非常的快,因为你在学习Django的时候就已经学习并且体验过了Web开发流程,所以会有这么一个现象出现,有些新手朋友在学习Flask.Tornado等小而美的框架时,很多概念不是很理解,比如ORM.路由等,但你学Django就不会出现这种

1Python全栈之路系列之MySQL数据库基本操作

Python全栈之路系列之MySQL数据库基本操作 MySQL数据库介绍 MySQL是一种快速易用的关系型数据库管理系统(RDBMS),很多企业都在使用它来构建自己的数据库. MySQL由一家瑞典公司MySQL AB开发.运营并予以支持.它之所以非常流行,原因在于具备以下这些优点: 基于开源许可发布,无需付费即可使用. 自身的功能非常强大,足以匹敌绝大多数功能强大但却价格昂贵的数据库软件. 使用业内所熟悉的标准SQL数据库语言. 可运行于多个操作系统,支持多种语言,包括 PHP.PERL.C.C

1Python全栈之路系列之面向基础

Python全栈之路系列之面向对象基础 面向对象基本介绍 Python编程方式: 面向过程编程 面向函数编程 面向对象编程 名称定义: 如果函数没有在类中称之为函数 如果函数在类中称之为方法 创建类 # 创建一个类,类名是Class_basis class Class_basis:     # 在类里面创建了一个方法ret,类里面的方法必须加一个self关键字     def ret(self):         # 当调用方法的时候输出ret         print("ret")

8Python全栈之路系列之Django Cookie 与Sessi

Python全栈之路系列之Django Cookie与Sessi Cookies cookies是浏览器为Web服务器存储的一小段信息,每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies. 存取Cookies 创建Cookies def set_cookie(request):     # 创建HttpResponse对象     Response = HttpResponse()     # 创建cookie     Response.set_cookie("Cookie

3Python全栈之路系列之D

Python全栈之路系列之Django模板 模板是一个文本,用于分离文档的表现形式和内容,模板定义了占位符以及各种用于规范文档该如何显示的各部分基本逻辑(模板标签).模板通常用于产生HTML,但是Django的模板也能产生任何基于文本格式的文档. 如何使用模板系统 在Python代码中使用Django模板的最基本方式如下: 可以用原始的模板代码字符串创建一个Template对象,Django同样支持用指定模板文件路径的方式来创建Template对象; 调用模板对象的render方法,并且传入一套

2Python全栈之路系列之Tornado的Cookie与Sess

Python全栈之路系列之Tornado的Cookie与Sess 主要的代码结构为: #!/usr/bin/env python # _*_coding:utf-8 _*_ import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler):     def get(self, *args, **kwargs):         """         这里的代码将操作c

4Python全栈之路系列之Django模型

Python全栈之路系列之Django模型 MTV开发模式 把数据存取逻辑.业务逻辑和表现逻辑组合在一起的概念有时被称为软件架构的Model-View-Controller(MVC)模式.在这个模式中,Model代表数据存取层,View代表的是系统中选择显示什么和怎么显示的部分,Controller指的是系统中根据用户输入并视需要访问模型,以决定使用哪个视图的那部分. Django紧紧地遵循这种MVC模式,可以称得上是一种MVC框架. 以下是Django中M.V和C各自的含义: **M**: 数

3Python全栈之路系列之基于socket实现文件上传

Python全栈之路系列之基于socket实现文件上传 发布时间:2017年3月16日 00:04 浏览(106) 评论(0) 分类:Python 前言 此处没有前言 粘包 在实现发送文件功能之前我们先来理解下粘包的问题,下面有两张图,我觉得很清晰的就可以理解到了. 正常情况下发送文件 第一步: 客户端把获取到的文件总大小(size=65426)先放到缓冲区,然后发送给服务端 第二步: 此时客户端接收到的文件总大小就是65426 粘包的问题下发送文件 第一步: 客户端把获取到的文件总大小(siz