webpy入门

简介:

 工作环境中需要经常生产和测试服务器,机房一直很混乱,因此萌生了开发一个简单方便的服务器管理系统(说的好高大上,其实就是个可以获取服务器信息的小web应用)。之所以选择webpy,正式因为它够简单,尤其是对于我这种python新人来说。它是一款轻量级的python web开发框架,对于个人开发小应用来说很适合。

webpy install

下载:wget http://webpy.org/static/web.py-0.37.tar.gz
安装:python setup.py install

webpy 'hello world'

  可以参考webpy的官方文档:http://webpy.org/docs/0.3/tutorial

      hello, world如下:

复制代码
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!';

  class index中包含了一个GET方法,用来处理与index相应的url的GET请求的;

  在主函数中,只需要创建一个application对象,运行就可以开启一个简单的web应用,默认的地址为:127.0.0.1:8080

GET && POST

  web包含两种方法:GET和POST

      对于GET,可以采用:

class index:
    def GET(self):
        return "Hello, world!"

  而,对于POST,采用:

class index:
    def POST(self):
        data = web.input(name=None)
        return "Hello, " + data.name + "!"

html模板

  在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作为服务器时,在当前目录下建立static目录,webpy会自动在该目录下寻找静态文件
  •       在 Apache 中可以使用 Alias 指令,在处理 web.py 之前将请求映射到指定的目录。

webpy db

  在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()
复制代码
本文转自cococo点点博客园博客,原文链接:http://www.cnblogs.com/coder2012/p/4023442.html,如需转载请自行联系原作者
相关文章
|
9月前
|
JSON 缓存 NoSQL
Sanic教程: 6.常用的技巧
Sanic教程: 6.常用的技巧
|
2月前
|
数据库 开发者 Python
Python在Web开发中的应用:Flask与Django框架介绍与实践
Python在Web开发中的应用:Flask与Django框架介绍与实践
|
7月前
|
关系型数据库 MySQL 数据库
基于 Python Django 的在线编程学习平台(仿慕课网)
基于 Python Django 的在线编程学习平台(仿慕课网)
|
9月前
|
JSON JavaScript Linux
Sanic教程: 1.快速开始
Sanic教程: 1.快速开始
|
9月前
|
数据采集 前端开发 JavaScript
【我问Crossin】Python web 该如何入门?
如果有选择困难症,不妨参照我们的建议:如果只是很简单的界面,可以用thinkter,不用额外装其他库。如果对界面美观程度要求较高,推荐 PyQT
|
10月前
|
存储 开发框架 前端开发
用 Python 撸一个 Web 服务器-第0章:开篇词
用 Python 撸一个 Web 服务器-第0章:开篇词
|
前端开发 编译器 项目管理
【零基础学Python】后端开发篇 第二十一节--Python Web开发二:Django的安装和运行
【零基础学Python】后端开发篇 第二十一节--Python Web开发二:Django的安装和运行
165 0
|
Shell Python
Django入门之开发环境搭建1.1
Django入门之开发环境搭建1.1
114 0
Django入门之开发环境搭建1.1
|
域名解析 网络协议 Python
Python Flask Web 开发入门与项目实战 ——Flask快速入手
Python Flask Web 开发入门与项目实战 Flask快速入手
849 0
Python Flask Web 开发入门与项目实战 ——Flask快速入手
|
Web App开发 数据库 数据安全/隐私保护