web.py开发
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开发的更多相关文章
- python使用web.py开发httpserver,解决post请求跨域问题
使用web.py做http server开发时,遇到postman能够正常请求到数据,但是浏览器无法请求到数据,查原因之后发现是跨域请求的问题. 跨域请求,就是在浏览器窗口中,和某个服务端通过某个 “ ...
- windows下如何快速搭建web.py开发框架
在windows下如何快速搭建web.py开发框架 用Python进行web开发的话有很多框架供选择,比如最出名的Django,tornado等,除了这些框架之外,有一个轻量级的框架使用起来也是非常方 ...
- 在windows下如何快速搭建web.py开发框架
在windows下如何快速搭建web.py开发框架 用Python进行web开发的话有很多框架供选择,比如最出名的Django,tornado等,除了这些框架之外,有一个轻量级的框架使用起来也是非常方 ...
- 【Python】【web.py】python web py入门-4-请求处理(上)
python web py入门-4-请求处理(上) 2017年09月05日 23:07:24 Anthony_tester 阅读数:2907 标签: webpy入门请求处理 更多 个人分类: Pyth ...
- web.py 安装
安装 安装web.py, 请先下载: http://webpy.org/static/web.py-0.37.tar.gz 或者获取最新的开发版: https://github.com/webpy/w ...
- Python开发WebService:REST,web.py,eurasia,Django
Python开发WebService:REST,web.py,eurasia,Django 博客分类: Python PythonRESTWebWebServiceDjango 对于今天的WebSe ...
- web.py学习心得
1.注意判断数字时,如果是get传递的参数,一定要用int转换.不然出错. 2.$var 定义时,冒号后的内容不是python内容,需加上$符号.如$var naviId:$naviId. 3.各个模 ...
- web.py simpletodo 例子
一个很好的例子: 许多新手,特别是从 ASP/PHP/JSP 转过来的同学,经常问下面这几个问题: 所有东西都放在一个 code.py 中呀?我有好多东西该如何部署我的代码? 是不是 /index 对 ...
- python web.py安装使用
官方首页:http://webpy.org/) 它的源代码非常整洁精干,学习它一方面可以让我们快速了解python语法(遇到看不懂的语法就去google),另一方面可以学习到python高级特性的使用 ...
随机推荐
- android手机安全性測试手段
android手机安全性測试手段 罗列一下自己经常使用的android手机安全性測试攻击手段: 1. fiddler和tcpdump+wireshark抓包分析,模拟改动http请求參数,检验漏洞 2 ...
- C语言 · 01背包
最近老碰到DP问题,没整过,在网上有不少资料,转载此篇自:http://blog.csdn.net/libin56842/article/details/9338841 有N件物品和一个容量为V的背包 ...
- [uEnv.txt]在uEnv.txt文件中使用if语句实现Image/dtb文件切换
指定image/dtb文件 bootdir= bootfile=zImage fdtfile=embest-SBCC_PH8800_WLQ.dtb loadaddr=0x82000000 fdtadd ...
- maven jar包上传到服务器
maven jar包上传到服务器时出现pom文件没有上传上去,致使该jar包再被使用的时候没有依赖,jar包调用出错 解决办法,将pom文件一起deploy上去 mvn deploy:deploy-f ...
- linux异步IO--aio
简述 linux下异步方式有两种:异步通知和异步IO(AIO),异步通知请参考:linux异步通知 Linux的I/O机制经历了一下几个阶段的演进: 1. 同步阻塞I/O: 用户进程进行I/O操作,一 ...
- Crystal Reports 版权疑问
以前一直以为Crystal Reports是微软公司的产品,由于最近公司项目用到Crystal Reports,花了点时间研究了下它,才发现其实不然. 历史: 最开始的开发公司名为Crystal Se ...
- Css+JS模拟实现可编辑的表格
表格在未编辑状态和编辑状态,需要定义两个不同的样式. 比如未编辑状态是lable的样式,两边有两个括号[],表示该表格可以编辑:编辑中的表格则表示成一个input框,可以输入. 基本思路就是,在表格中 ...
- js android页面被挂起问题解决
问题: 页面上设了定时器,但浏览器后台运行被挂起时,页面定时器暂停 解决: 向服务器发送同步请求,服务器延时1秒返回.页面收到返回时再次发送请求 服务器相当于起博器,维持页面将停的心跳
- OC与AS3的观察者模式比较以及外部回调
一.要点 1.AS3的观察者模式,主要是体现在在哪个组件上监听,那么就在这个组件上分发事件,并且可以直接传递Function. 2.OC的观察者模式,主要是需要你指定观察的对象,和观察的对象方法sel ...
- sparkr跑通函数 包含排序
spark1.4.0的sparkR的思路:用Spark从大数据集中抽取小数据(sparkR的DataFrame),然后到R里分析(DataFrame). 这两个DataFrame是不同的,前者是分布式 ...