web.py是一个轻量级的python web框架,简单而且功能强大。相对flask和django,web.py更适合初学者来学习和了解web开发的基础知识。这篇文章记录一下web.py的学习过程。
开始
安装我直接就是pip install web.py
,这样会安装最新版本的web.py,好像是0.39版本。更具体的还是参考官网http://webpy.org/install。
至于教程就不废话了,官网上的应该足够了,说多了都是多余,就是这个网址,还有一个中文网址,这好像是直接拿谷歌翻译转的,看起来还不如英文的好理解。
不废话,直接录代码吧。
hello
hello.py
1 | import web |
templates/hello.html
1 | $def with (name) |
运行
1 | python hello.py #默认用8080端口 |
访问几个url测试下效果:
1 | http://localhost:8080/hello1 |
web.py使用数据库
web.py推荐使用的数据库一般是mysql
或postgres
,这两个对我这种初学者来说还是有点奢侈,于是我选了sqlite
,因为它不用安装,对python2.7来说开箱即用,只需import sqlite3
。
sqlite客户端工具
我是linux系统,直接敲入sqlite3
命令就好了(系统默认安装),如果想顺带打开数据库,可以这样sqlite3 test.db
。windows下安装也简单。
网上有篇sqlite、mysql和postgres的对比文章,有空看看。
下面上一段sqlite3命令代码,最终实现创建表,为web.py例子做准备:
1 | .open test.db -- 打开数据库 |
用户注册
code1.py
1 | import web |
templates/index1.html
1 | $def with (users) |
templates/regist.html
1 | <form method="post" action="regist"> |
测试一下上面的例子,是可以的。这里记录一下上面获得的users
对象可以用uers.list()
转成列表,然后就可以进行list的相关操作了。
python操作数据库
本节跟web.py无关,只是看到web.py要操作数据库,顺便记录一下python下的操作数据库的方法。
python操作数据库是我用过的编程语言最方便的,一个cursor
包打天下。oracle、mysql、sqlserver、sqlite…我们能想到的关系型数据库,只要安装了相应模块后,除了连接参数不同,其他操作都是一样的。这点就像java的JDBC操作数据库那样,很方便。
下面,以sqlite为例,演示一下python操作数据库:
1 | import sqlite3 #默认安装,其他数据库没这待遇 |
静态文件
z直接引用官方文档里的一段话:
Create a directory (also known as a folder) called
static
in the location of the script that runs the web.py server. Then place the static files you wish to serve in the static folder.
看个例子:
1 | # -*- coding: UTF-8 -*- |
RESTful
我暂且这么理解:restful就是服务端实现了GET、POST、PUT、DELETE方法且每个方法返回都是json串。那么,web.py如何实现restful?
先看一个例子:
1 | import json |
然而这个例子并木有什么用,这里只是记录下python如何操作json。
然后看一个web.py实现rest的例子:code.py
1 | import web |
运行python code.py
启动web服务。然后我们来测试一下,从浏览器输入http://localhost:8080/
看下结果,返回的是GET方法的结果。
坏了,POST、DELETE和PUT方法怎么测?我当然先想到的是无所不能的curl,试试:
1 | curl -XGET "http://localhost:8080/" |
测试成功,web服务后台分别调了相应方法。但是,干这种事情我python还要借助你curl么,开玩笑。先来个简便的:
1 | #pip install httplib2 |
再来一个不用httplib2的稍微繁琐一点的例子:
1 | import urllib |
参考文章:http://webpy.org/cookbook/restful_doctesting_using_request、http://blog.chinaunix.net/uid-26000296-id-4394470.html、https://blog.csdn.net/d_yang/article/details/2959530
学习资料
https://blog.csdn.net/freeking101/article/details/53020865
https://piaosanlang.gitbooks.io/web-py/content/index.html
总结
以后有什么需要记录的web.py学习过程遇到的问题,就在这上面吧。