python3 web框架_循序渐进Python3(十二) --0--  web之框架

上述通过socket来实现了其本质,而对于真实开发中的python web程序来说,一般会分为两部分:服务器程序和应用程序。服务器程序负责对socket服务器进行封装,并在请求到来时,对请求的各种数据进行整理。应用程序则负责具体的逻辑处理。为了方便应用程序的开发,就出现了众多的Web框架,例如:Django、Flask、web.py 等。不同的框架有不同的开发方式,但是无论如何,开发出的应用程序都要和服务器程序配合,才能为用户提供服务。这样,服务器程序就需要为不同的框架提供不同的支持。这样混乱的局面无论对于服务器还是框架,都是不好的。对服务器来说,需要支持各种不同框架,对框架来说,只有支持它的服务器才能被开发出的应用使用。这时候,标准化就变得尤为重要。我们可以设立一个标准,只要服务器程序支持这个标准,框架也支持这个标准,那么他们就可以配合使用。一旦标准确定,双方各自实现。这样,服务器可以支持更多支持标准的框架,框架也可以使用更多支持标准的服务器。

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

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

#!/usr/bin/env python

#coding:utf-8

fromwsgiref.simple_server importmake_server

defRunServer(environ,start_response):

start_response('200 OK',[('Content-Type','text/html')])

return'

Hello, web!

'

if__name__ =='__main__':

httpd =make_server('',8000,RunServer)

print"Serving HTTP on port 8000..."

httpd.serve_forever()

自定义web框架

通过python标准库提供的wsgiref模块开发一个自己的Web框架。

#!/usr/bin/env python

#coding:utf-8

fromwsgiref.simple_server importmake_server

defindex():

return'index'

deflogin():

return'login'

defrouters():

urlpatterns =(

('/index/',index),

('/login/',login),

)

returnurlpatterns

defRunServer(environ,start_response):

start_response('200 OK',[('Content-Type','text/html')])

url =environ['PATH_INFO']

urlpatterns =routers()

func =None

foritem inurlpatterns:

ifitem[0]==url:

func =item[1]

break

iffunc:

returnfunc()

else:

return'404 not found'

if__name__ =='__main__':

httpd =make_server('',8000,RunServer)

print"Serving HTTP on port 8000..."

httpd.serve_forever()

python中的WEB框架分为:即写Socket又写(处理请求)的WEB框架比如Tornado,

还有就是不写Socket然后自己写处理请求的WEB框架:Django

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566936.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图像识别开源代码_灰度图像着色开源代码

Victory组近期整理了灰度图像着色开源代码,文章刊登于《中国计算机学会计算机视觉专委会简报》2019年第2期上。灰度图像(gray image)是每个像素只有一个采样颜色的图像,即单通道图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度&#xf…

【adb】电脑通过ADB向手机传输文件

具体步骤如下: Step1 下载ADB工具 下载最新版本的 ADB工具 !!! 注意:一定要是最新版本的ADB,否则很可能导致无法识别到手机。 将下载的ADB解压以后的文件如下图所示: Step2 添加环境变量 将 ADB的路径 D:\platformtools &…

java userdao,Java Web 开发基础------DAO

DAO (Data Access Objects)数据访问对象是第一个面向对象的接口,它显露了 Microsoft Jet数据库引擎(由 Microsoft Access 所使用),并允许 Visual Basic 开发者通过 ODBC 象直接连接到其他数据库一样,直接连接到 Access 表。DAO 最适用于单系统…

git 提交文件_GIT不小心提交了大文件导致提交失败怎么办?

出现问题的原因在commit的时候,我们之前提交的版本里面已经包含了些大文件了,虽然后来在新的提交里面删除了这些大文件,但是之前commit的记录还是存在,所以之后提交还是会失败1) 模拟一下环境:新建仓库并且添加一个 te…

matlab中变.,Matlab变系数微分方程

附件给出的是齿轮动力学振动模型和微分方程其中x为要求的位移响应,Zeta为齿轮副相对阻尼系数,Zeta 0.07,m为等效质量m3;Fn为法向载荷Fn100N。k(t)为齿轮副的时变啮合刚度对k(t)我做了关于时间t的傅里叶变换:k750527161…

ztree 标准得json数据格式_酷站推荐 - json-c.github.io/json-c - json-c API

json-c.github.io/json-c/http://json-c.github.io/json-c/JSON:JavaScript 对象表示法(JavaScript Object Notation)。 JSON 是存储和交换文本信息的语法。类似 XML。 JSON 比 XML 更小、更快,更易解析。JSON(JavaScript Object …

matlab randn state 2,MATLAB?中的randn函数

matlab函数randn:产生正态分布的随机数或矩阵的函数randn产生均值为0,方差 σ^2 1,标准差σ 1的正态分布的随机数或矩阵的函数。用法:Y randn(n)返回一个n*n的随机项的矩阵。如果n不是个数量,将返回错误信息。Y ra…

qt弹框输入密码_Android仿支付宝密码输入框

实现效果图:实现流程:1、定义6位密码输入View思路:要绘制边框矩形,绘制分割线,绘制圆点。绘制圆的数目要与字符串的长度有关,添加或者删除都要修改字符串,输入6位后就是要关闭弹框,拿…

php 前置匹配,浅析PHP正则表达式匹配的特定实现

PHP正则表达式匹配的特定实现是什么呢?其实我们知道,在实际的匹配操作的过程中我们操作的不仅仅是单个的字母或是数字,那么我们面对像单词的或是一组数字的时候该如何处理呢?PHP正则表达式匹配的特定实现会使用到PHP正则表达式内置…

esc指令检查打印状态_Z.115 胶片自助打印设备

一、概述病人在完成影像检查后,需要快速获取结果,传统的方式是向病人发放胶片和诊断报告,随着大型医院病人检查量的快速增加,这种方式有诸多弊病。自助打印机将胶片和诊断报告打印集成起来,消除时空障碍,实…

java执行class找不到main函数_你所不知道的HelloWorld背后的执行原理

专注于Java领域优质技术,欢迎关注作者:饭谈编程【今日最佳】对于程序员而言,所谓的二八定律指的是 花百分之八十的时间去学习日常研发中不常见的那百分之二十的原理。据说阿里某程序员对书法十分感兴趣,退休后决定在这方面有所建树…

matlab窗函数 响应,matlab窗函数设计方案.doc

matlab窗函数设计方案PAGE \* MERGEFORMATPAGE \* MERGEFORMAT 13目录TOC \o "1-3" \h \u HYPERLINK \l _Toc18947 目录 PAGEREF _Toc18947 1HYPERLINK \l _Toc5619 摘要 PAGEREF _Toc5619 2HYPERLINK \l _Toc16857 1 MATLAB的概况 PAGEREF _Toc16857 2HYPERLINK \l …

java接口文档生成工具_【分享】接口文档生成工具apipost

一、为什么要写接口文档?正规的团队合作或者是项目对接,接口文档是非常重要的,一般接口文档都是通过开发人员写的。一个工整的文档显得是非重要。项目开发过程中前后端工程师有一个统一的文件进行沟通交流开发,项目维护中或者项目…

matlab boll源码,【每日一策】Matlab量化交易策略之 布林带突破+头寸管理

function Strategyn(freq)%targetList traderGetTargetList();%获取目标资产信息HandleList traderGetHandleList();%获取账户句柄global record;global state;for k1:length(targetList);%--------------------仓位、K线、当前bar的提取-----------------------------%%获取…

jacobi matlab程序,jacobi迭代法实验MATLAB程序数值分析

jacobi迭代法实验MATLAB程序数值分析 例1. 求线性方程组 得近似解。精确解为x*[3,2,1]’。 解:对方程进行移项就得 记为Axb,或写为xB0 xf,其中 取初始值,代入原方程组可得再将把它代入可得.反复利用这个计算过程,得到一向量序列和…

docker部署python web应用_安装docker并部署web项目

一.docker简介1、docker定义:docker是一个用来装应用的容器,就像杯子可以装水,笔筒可以装笔,书包可以放书一样。你可以把“hello world!”放到docker中,也可以把网站放到docker中,你可以把任何你…

java 水印乱码,linux java程序加水印及中文乱码方案

在linux,centos环境下的,生成的带文字的水印图片在显示为方框乱码。img.setFont(new Font("宋体", Font.BOLD, 20));写中文进入图片之前必须设置字体,而且这个字体必须支持中文,否则就会出现乱码或者方框、问号等等。Bu…

resultmap拿不到数据_阿里巴巴国际站每日电商运营工作数据表格

一、日常运营工作表1.数据日报统计每天的流量数据:2.数据周报统计每周的流量数据:3.数据月报统计每月流量数据:前半部分后半部分4.P4P月数据总览统计P4P的流量数据:大图包含上面所有的方案5.P4P日数据总览6.爆款数据统计每月统计爆…

php oracle新增数据类型,oracle数据类型

数据类型字符串类型字符串类型用来存储字符串数据char用于描述定长的字符型数据0~2000nchar用来存储Unicode字符集的定长字符型数据0~1000varchar2用于描述可变长的字符型数据0~4000nvarchar2用来存储unicode字符集的可变长字符型数据0~1000long用来存储边长的字符串0~2GBvarch…

jenkins ssh 远程部署_Jenkins部署jar到远程服务器

首选得确定Jenkins的安装完整,还有插件的安装,除默认插件,此处必备插件:Publish Over SSH,SSH plugin,因为我源码在gitlab所以关于gitlab的插件我也安装了,看各自的情况选择安装。然后到系统管理…