初学笔记

webpy是python基础的web框架,上手简单,基本上有15分钟左右就可以初步了解并写一些简单的demo。但是使用中会发现有一些不够完善的地方。本文作为学习笔记,对其简单介绍。

1.安装
一般安装了pip的话可以直接pip安装

$ sudo pip install web.py
$ sudo pip install flask

ubuntu可以使用apt安装

 $ sudo apt install python-webpy

2.简介

## ==========================================================================
## 主函数部分:
## ==========================================================================
if __name__ == "__main__":
## 1.设置 Hander
urls = ('/cmd/(.*)', 'CmdHander'     ##当报文头为http://x.x.x.x:xxx/cmd/*(all)时,调用CmdHander类中的函数
)
app = web.application(urls, globals())## 2.设置监听
# ========================================================================
# webpy默认使用8080端口,如果需要改端口需要在执行.py文件时加参数
# 例如:python xxxx.py 8888
# 下面的做法,相当于将参数在代码中写入
#=========================================================================
sys.argv.append("8888")
app.run()## ==========================================================================
## 实现请求处理部分
## ==========================================================================
## 定义处理cmd命令的类
class CmdHander: ## 定义 get 方法def GET(self, name):## name 是cmd/命令后的子命令 例如x.x.x.x:8080/cmd/test  ---->  name = 'test'## return 将结果直接返回调用方return xxx## 定义 post 方法def POST(self,name):print name      #同样 name 是cmd/命令后的子命令,如果x.x.x.x:8080/cmd/test/123  ---->  name = 'test/123'print web.data()    ## web.data()是接收到的post的参数 print type(web.data())  ## 类型是字符串#--------------------------------------------------------------------------------------# 1.使用 requests 方式调用 (import requests)#       r = requests.post('http://127.0.0.1:8888/cmd/test',{"aaa":123,"BBB":112})#   调用方获取返回值:#   r.status_code ----> 执行状态码(成功:200,失败:404/500/......)#   r.headers     ----> 返回头 例如:{'Transfer-Encoding': 'chunked', 'Date': 'Mon, 09 Jul 2018 08:25:25 GMT', 'Server': 'localhost'}#   r.text        ----> get/post 方法返回的值# 2.使用 urllib2 #   url='http://127.0.0.1:8888/cmd/test'#   headers = {'Content-Type': 'application/json'}#   request = urllib2.Request(url, headers=headers, data=json.dumps(data))#   response.code    ----> 执行状态码(成功:200,失败:404/500/......)#   response.headers ----> 返回头 #   response.read()  ----> get/post 方法返回的值#   更多可以通过dir(response)查看#________________________________________________________________________________________#   编码方式:# * 未编码,(直接使用curl 或 requests.post/request(url,data) = urllib2.Request(url, headers, data)的:#       web.data() = aaa=123&BBB=112  #     转换字典方式:dict(urlparse.parse_qsl(web.data()))# * 使用json编码的 :#     使用json.dumps 对 {"aaa":123,"BBB":112} 进行编码#     例如:requests.post/request(url,json.dumps(data)) 或 request = urllib2.Request(url, headers=headers, data=json.dumps(data))#       web.data() = "{"age": 13, "name": "mac"}" (json字符串)#     转换字典方式: dic =  json.loads(web.data())#---------------------------------------------------------------------------------------## return 将结果直接返回调用方return "get"

3.关于并发
webpy 可以并发,也就是说当同时多次调get/post方法时,不会因为之前的请求耗时,未执行完而导致新的请求阻塞。
同步阻塞问题在 python tornado 框架中再继续学习。

4. demo

#!/usr/bin/env python
# -*- coding: utf-8 -*-# @ // sudo apt install python-webpy
# @ // sudo pip install web.py
# @ // sudo pip install flask
import web
import sys
import json
reload(sys)
sys.setdefaultencoding('utf-8')
import urlparse
import timeurls = ('/cmd/(.*)', 'hello'
)app = web.application(urls, globals())class hello:def GET(self, name):i = web.input(times=1)print " i: ",iif not name:name = 'world'print "int(i.times): ",int(i.times)for c in xrange(int(i.times)):print 'Hello,', name+'!'ret = 'Hello, ' + name + '!'time.sleep(10)return ret.encode("utf-8")def POST(self,name):print "============="print nameprint web.data()print type(web.data())if "=" in web.data():#print dict(urlparse.parse_qsl(web.data()))print urlparse.parse_qsl(web.data())dic = dict(urlparse.parse_qsl(web.data()))for key in dic:print "[",key,"] : ",dic[key]else:dic =  json.loads(web.data())for key in dic:print "[",key,"] : ",dic[key]return "get"if __name__ == "__main__":sys.argv.append("8888")    # @ // 其实是在运行python文件的时候 加参数。app.run()
## 此测试,可通过浏览器打开http://127.0.0.1:8888/cmd/world检测

webpy —— 简单直接的 python web 框架相关推荐

  1. python web框架介绍对比

    Django Python框架虽然说是百花齐放,但仍然有那么一家是最大的,它就是Django.要说Django是Python框架里最好的,有人同意也有人 坚决反对,但说Django的文档最完善.市场占 ...

  2. python写web难受-(2017)你最不建议使用的Python Web框架?

    原标题:(2017)你最不建议使用的Python Web框架? 前言 这是一篇发在知乎专栏的文章,内容是之前我提的「(2017)你最不建议使用的Python Web框架?」下的回答.不过有些话没有说完 ...

  3. python的web框架哪个最好学_2018年要学习的10大Python Web框架

    通过为开发人员提供应用程序开发结构,框架使开发人员的生活更轻松.他们自动执行通用解决方案,缩短开发时间,并允许开发人员更多地关注应用程序逻辑而不是常规元素. 在本文中,我们分享了我们自己的前十大Pyt ...

  4. 第9章 Python Web 框架考察点

    Python WSGI与web框架常考点 WSGI 常见Web框架 ◆什么是WSGI? ◆常用的 Python Web框架Dang/Fask/Tornado对比 ◆web框架的组成(淡化框架,加强基础 ...

  5. “脚踢各大Python Web框架”,Sanic真有这能耐么?

    在Github上,Sanic第一句介绍语就是: "Sanic is a Flask-like Python 3.5+ web server that's written to go fast ...

  6. python web框架对比_Python六大开源框架对比

    Python 是一门动态.面向对象语言.其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性.除了语言本身的设计目的之外,Python标准 库也是值得大家称赞的,Python甚至还 ...

  7. 属于web框架的python库_(2017)我不建议使用的Python Web框架

    昨天我提了一个问题 (2017)你最不建议使用的Python Web框架? 下面是在原问题下的回答,看过的同学可以点赞关闭了. --- 分割线 --- 在知乎可以看到的很多Web框架推荐,有很多内容已 ...

  8. python网站设计理念_简单介绍下python Django框架的历史,设计理念及优势_Django讲解2...

    简单介绍下python Django框架的历史,设计理念及优势 Django是一个高层次的 Python Web 框架,它是一个鼓励快速开发和干净,实用的框架设计.Django可以更容易地快速构建更好 ...

  9. 浅谈五大Python Web框架

    http://www.csdn.net/article/2011-02-17/292058 导读:作者飞龙写了一篇<浅谈Python Web框架>,文中他介绍了几个Python Web框架 ...

最新文章

  1. 10 不自动断开 设置wlan_WiFi和WLAN,还傻傻分不清?
  2. SparkStreaming - 无状态与有状态 updataStateByKey
  3. android EditText使用详解,29.Android EditText使用详解
  4. Kotlin 1.5 新特性:密封接口有啥用?
  5. 砸115亿元入局!后知后觉的欧洲重金建设AI,为赶中超美
  6. Oracle Database 中 B*Tree 索引内部维护
  7. modelsim编译c语言,Modelsim协同SystemC仿真
  8. Python优化算法01——差分进化算法
  9. C课设/宾馆客房管理系统/内附源码
  10. 从此刻起  文/毛毛虫
  11. [原创]威胁猎人 | 2018年上半年短视频行业黑灰产研究报告
  12. linux ftp 取文件,linux下拉取文件的方法
  13. shiny导出html,将R Shiny页面导出为PDF
  14. ElasticSearch集群黄色原因以及解决方案
  15. 跨域在前端工程化中的实际解决方案。
  16. miui android系统 流量,小米4 MIUI6系统怎么设置流量功能?小米4 MIUI6流量管理设置?...
  17. express 框架之session
  18. python hashlib库(MD5,sha1,sha256,sha512,pbkdf2_hmac)用法及pbkdf2原理
  19. VUE组件通信的使用
  20. 最新美团面试集合(一面+二面+三面+重点技术面试题)附面试解析

热门文章

  1. 本站最全-unity常用API大全(万字详解),不信你不收藏
  2. Windows server 2019 安装VPN
  3. 函数重载导致的二义性
  4. editplus5激活码 文件下载 汉化包
  5. Java博客项目(重点)
  6. 襄阳寻古2-襄阳城墙,铁佛寺
  7. 引用防删——JAVA设计模式总结之六大设计原则
  8. Xcode自动编译、打包、上传到蒲公英应用分发平台
  9. iOS比较常用的第三方及实例(不断更新中)
  10. C++边学边用,使用类完成复数运算,可自动识别表达式(详细注释)