web.py需要使用python2.X,所以安装python版本2.7.9

web.py 是一个轻量级Python web框架,它简单而且功能强大

web.py安装

安装python

(1)使用pip

pip install web.py

安装的目录Python27\Lib\site-packages

(2) https://github.com/webpy/webpy下载release版本的web.py

下载下来之后,解压,打开cmd,cd到解压目录下,输入

python setup.py install

查看安装是否成功,pip list

web.py 测试

新建hello.py

import web

urls = (
'/(.*)', 'hello'
)
app = web.application(urls, globals()) class hello:
def GET(self, name):
if not name:
name = 'World'
return 'Hello, ' + name + '!' if __name__ == "__main__":
app.run()

进入保存的目录

python hello.py

在浏览器输入http://127.0.0.1:8080/

命令窗口显示

第一部分(‘/’)是一个匹配URL 的正则表达式;第二部分(‘index’)是一个类名,匹配的请求将会被发送过去

若要制定另外的端口使用python code.py 后面添加IP 地址/端口

如:http://192.168.5.239:8080/aa

web.py的输出html页面

import web

urls = (
'/(.*)', 'hello'
)
app = web.application(urls, globals()) class hello:
def GET(self, name):
return open(r'aa.html','r').read() if __name__ == "__main__":
app.run()

aa.html页面是已有的html页面

web.py学习

1.URL映射

  完全匹配

  模糊匹配

  带组匹配

  

import web

urls = (
'/index','index',
'/blog/\d+','blog',
'/(.*)', 'hello'
)
app = web.application(urls, globals()) class index:
def GET(self):
return 'index method' class blog:
def GET(self):
return 'blog method' class hello:
def GET(self, name):
if not name:
name = 'World'
return 'Hello, ' + name + '!' if __name__ == "__main__":
app.run()

 

注:

  范围大的要放在后面 

2.请求处理

  请求参数获取

    web.input()

  请求头获取

    web.ctx.env

hello.py

import web

urls = (
'/index','index',
'/blog/\d+','blog',
'/(.*)', 'hello'
)
app = web.application(urls, globals()) class index:
def GET(self):
query = web.input()
return query class blog:
def POST(self):
data = web.input()
return data class hello:
def GET(self, name):
return open(r'hello.html').read() if __name__ == "__main__":
app.run()

 hello.html

<html>
<head>
<title>hello</title>
<head>
<body>
<form action="/blog/123" method="POST">
<input type="text" name="id" value="" />
<input type="text" name="name" value="" />
<input type="submit" value="submit">
</form>
</body>
</html>

表单提交后

修改代码获取请求头

import web

urls = (
'/index','index',
'/blog/\d+','blog',
'/(.*)', 'hello'
)
app = web.application(urls, globals()) class index:
def GET(self):
query = web.input()
return query class blog:
def POST(self):
data = web.input()
return data
def GET(self):
data1 = web.ctx.env
return data1 class hello:
def GET(self, name):
return open(r'hello.html').read() if __name__ == "__main__":
app.run()

  

3.相应处理

  (1)模板文件读取

    render.index("参数")

hello.py    

import web

render = web.template.render("templates")
urls = (
'/index','index',
'/blog/\d+','blog',
  '/(.*)', 'hello'
)
app = web.application(urls, globals()) class index:
def GET(self):
query = web.input()
return query class blog:
def POST(self):
data = web.input()
return data
def GET(self):
data1 = web.ctx.env
return data1 class hello:
def GET(self, name):
return render.hello1(name) if __name__ == "__main__":
app.run()

在hello.py同级目录下,存在templates/hello1.html

hello1.html

$def with(name)
<html>
<head>
<title>hello1</title>
<head>
<body>
<h1>hello1,$name</h1>
<form action="/blog/123" method="POST">
<input type="text" name="id" value="" />
<input type="text" name="name" value="" />
<input type="submit" value="submit">
</form>
</body>
</html>

  

  (2)结果数据处理

    model.select("sql)

安装已编译版本 下载MySQldb ,安装已编译版本

goods.py

import web
import MySQLdb
import MySQLdb.cursors
render = web.template.render("templates")
urls = (
'/goods','goods'
)
app = web.application(urls, globals()) class goods:
def GET(self):
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='root',db='mshop_dev',port=3306,charset="utf8",cursorclass=MySQLdb.cursors.DictCursor)
cur=conn.cursor()
cur.execute("select * from mshop_goods limit 5")
r=cur.fetchall()
cur.close()
conn.close()
print r
return render.goods(r) if __name__ == "__main__":
app.run()

goods.html

$def with(r)
<html>
<head>
<meta charset="utf-8" />
<title>goods</title>
<head>
<body>
<h1>商品列表</h1>
<ul>
$for l in r:
<li>$l.get('goods_id'),$l.get('goods_name')=>$l.get('store_name')<li>
</ul>
</body>
</html>

  

  (3)URL跳转

    web.seeother("/")

import web
import MySQLdb
import MySQLdb.cursors
render = web.template.render("templates")
urls = (
'/index','index',
'/goods','goods',
'/(.*)', 'hello'
)
app = web.application(urls, globals()) class index:
def GET(self):
return web.seeother("/goods") class goods:
def GET(self):
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='root',db='mshop_dev',port=3306,charset="utf8",cursorclass=MySQLdb.cursors.DictCursor)
cur=conn.cursor()
cur.execute("select * from mshop_goods limit 5")
r=cur.fetchall()
cur.close()
conn.close()
print r
return render.goods(r) class hello:
def GET(self, name):
return web.seeother("http://baidu.com") if __name__ == "__main__":
app.run()

  输入http://127.0.0.1/index跳转到http://127.0.0.1:8080/goods

  输入http://127.0.0.1/hello跳转到https://www.baidu.com/

注:

  web.py的静态文件必须放在static文件夹下面

  web.py并不具备部署网站的能力,因此对于web.py程序只能在本地访问,如果要进行部署必须要使用apache、nginx、lighttped

  通过FastCGI结合lighttpd是web.py,通过该方法可以处理百万次的点击

web.py开发的更多相关文章

  1. python使用web.py开发httpserver,解决post请求跨域问题

    使用web.py做http server开发时,遇到postman能够正常请求到数据,但是浏览器无法请求到数据,查原因之后发现是跨域请求的问题. 跨域请求,就是在浏览器窗口中,和某个服务端通过某个 “ ...

  2. windows下如何快速搭建web.py开发框架

    在windows下如何快速搭建web.py开发框架 用Python进行web开发的话有很多框架供选择,比如最出名的Django,tornado等,除了这些框架之外,有一个轻量级的框架使用起来也是非常方 ...

  3. 在windows下如何快速搭建web.py开发框架

    在windows下如何快速搭建web.py开发框架 用Python进行web开发的话有很多框架供选择,比如最出名的Django,tornado等,除了这些框架之外,有一个轻量级的框架使用起来也是非常方 ...

  4. 【Python】【web.py】python web py入门-4-请求处理(上)

    python web py入门-4-请求处理(上) 2017年09月05日 23:07:24 Anthony_tester 阅读数:2907 标签: webpy入门请求处理 更多 个人分类: Pyth ...

  5. web.py 安装

    安装 安装web.py, 请先下载: http://webpy.org/static/web.py-0.37.tar.gz 或者获取最新的开发版: https://github.com/webpy/w ...

  6. Python开发WebService:REST,web.py,eurasia,Django

    Python开发WebService:REST,web.py,eurasia,Django 博客分类: Python PythonRESTWebWebServiceDjango  对于今天的WebSe ...

  7. web.py学习心得

    1.注意判断数字时,如果是get传递的参数,一定要用int转换.不然出错. 2.$var 定义时,冒号后的内容不是python内容,需加上$符号.如$var naviId:$naviId. 3.各个模 ...

  8. web.py simpletodo 例子

    一个很好的例子: 许多新手,特别是从 ASP/PHP/JSP 转过来的同学,经常问下面这几个问题: 所有东西都放在一个 code.py 中呀?我有好多东西该如何部署我的代码? 是不是 /index 对 ...

  9. python web.py安装使用

    官方首页:http://webpy.org/) 它的源代码非常整洁精干,学习它一方面可以让我们快速了解python语法(遇到看不懂的语法就去google),另一方面可以学习到python高级特性的使用 ...

随机推荐

  1. docker探索-docker私有仓库搭建(九)

    前言 本文讲解搭建docker的私有仓库,和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时也允许我们使用registry搭建本地私有仓库 一.环境 ip 主机名 操作系统 角色 19 ...

  2. Java输出字符串格式问题 .UnknownFormatConversionException

    今天遇到一个问题,使用JSoup挖掘出的数据一直出错 Exception in thread "main" java.util.UnknownFormatConversionExc ...

  3. [uart]设置linux 串口的block方式

    1. 如果设置为非block模式: open(device, O_RDWR | O_NDELAY | O_NONBLOCK); 2. 如果设置为block模式,且读固定字节数返回则termios.c_ ...

  4. STM32 ADC多通道转换

    描述:用ADC连续采集11路模拟信号,并由DMA传输到内存.ADC配置为扫描并且连续转换模式,ADC的时钟配置为12MHZ.在每次转换结束后,由DMA循环将转换的数据传输到内存中.ADC可以连续采集N ...

  5. java随机范围内的日期

    使用了最新的java8的java.time类,并提供了LocalDateTime和java.util.Date之间的转换. 使用方法: randomLocalDateTime(-3,3) : 取距离今 ...

  6. .net修炼笔记

    1. 底层基础概念 CIL(Common Intermediate Language) 中间语言(C# VB 最终编译成CIL语言) BCL(Base Class Library) 基础类库 (Sys ...

  7. 再谈git的http服务-权限控制gitweb版(未成功)

    截至目前,对gitweb的掌握还没达到最终目标,仅仅实现了通过浏览器来浏览项目,通过git命令仍然未能clone项目.但仍然要记录下来,主要是因为打算暂时放弃这条路,而所收获的一些经验还是要记录下来. ...

  8. SpringMVC深度探险(三) —— DispatcherServlet与初始化主线

    在上一篇文章中,我们给出了构成SpringMVC应用程序的三要素以及三要素的设计过程.让我们来归纳一下整个设计过程中的一些要点: SpringMVC将Http处理流程抽象为一个又一个处理单元 Spri ...

  9. Linux epoll版定时器

    #ifndef __MYTIMER_H_ #define __MYTIMER_H_ /*************** 高并发场景下的定时器 *****************/ //定时器回调函数 t ...

  10. Linux Makefile简单模板

    ########################################### #Makefile for simple programs ########################## ...