工做环境中须要常常生产和测试服务器,机房一直很混乱,所以萌生了开发一个简单方便的服务器管理系统(说的好高大上,其实就是个能够获取服务器信息的小web应用)。之因此选择webpy,正式由于它够简单,尤为是对于我这种python新人来讲。它是一款轻量级的python web开发框架,对于我的开发小应用来讲很适合。html
下载:wget http://webpy.org/static/web.py-0.37.tar.gz
安装:python setup.py install
能够参考webpy的官方文档:http://webpy.org/docs/0.3/tutorialpython
hello, world以下:mysql
import web urls = ( '/', 'index' ) class index: def GET(self): return "Hello, world!" if __name__ == "__main__": app = web.application(urls, globals()) app.run()
在webpy中,url请求的映射在urls元组中,如上图中GET ip:port/,会直接调用index类的GET方法,返回字符串'hello, world!';web
class index中包含了一个GET方法,用来处理与index相应的url的GET请求的;sql
在主函数中,只须要建立一个application对象,运行就能够开启一个简单的web应用,默认的地址为:127.0.0.1:8080数据库
web包含两种方法:GET和POST服务器
对于GET,能够采用:app
class index: def GET(self): return "Hello, world!"
而,对于POST,采用:框架
class index: def POST(self): data = web.input(name=None) return "Hello, " + data.name + "!"
在webpy中,通常采用templates来存放html页面文件。大概的访问方式以下:函数
urls = ( '/img', 'image' ) render = web.template.render('templates') class image: def GET(self): return render.image()
urls中定义了url映射,访问ip:port/img会直接条用class image来处理;
web.template.render(path)是用来指定存放html的目录,上面指定了html的指定存放位置位于当前文件夹下的templates文件下;
返回的render.image()表示在render所指定的目录下寻找image.html文件并做为返回结果。
class show: def GET(self): return render.show('hello world!')
$def with(str) <html> <body> $for i in range(5): <h1>$str</h1> <body> </html>
show类是用来展现字符串'hello world!',下面的html为show.html,webpy支持模板,支持参数以$def with()开始做为函数的开始;
在html中可使用python语句,但语句前须要添加$,在上面的html中str会在页面上打印5次。
静态文件
在webpy中,提供了默认的静态文件的访问方式
在webpy中提供了数据库访问的API,其实从源码中能够看出来是对MySQLdb的封装,但为了方便起见用起来仍是能够的。
db = web.database(dbn='mysql', db='test', user='root', pw='123123') def new_post(title, content): db.insert('news', title=title, content=content, posted_on=datetime.datetime.utcnow()) def get_post(id): try: return db.select('news', where='id=$id', vars=locals())[0] except IndexError: return None def get_posts(): return db.select('news', order = 'id DESC') def del_post(id): db.delete('news', where = 'id = $id', vars = locals()) def update_post(id, title, content): db.update('news', where='id = $id', vars=locals(), title=title, content=content)
webpy也支持事务:
import web db = web.database(dbn="postgres", db="webpy", user="foo", pw="") t = db.transaction() try: db.insert('person', name='foo') db.insert('person', name='bar') except: t.rollback() raise else: t.commit()
![]()
本做品采用 知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。欢迎转载,请注明出处:
转载自: cococo点点 http://www.cnblogs.com/coder2012