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()


本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。欢迎转载,请注明出处:
转载自:cococo点点 http://www.cnblogs.com/coder2012


本文 由 cococo点点 创作,采用 知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆 许可协议进行许可。欢迎转载,请注明出处:
转载自:cococo点点 http://www.cnblogs.com/coder2012

时间: 2024-09-16 08:16:11

webpy使用笔记(一)的相关文章

webpy使用笔记(二) session的使用

webpy使用系列之session的使用,虽然工作中使用的是django,但是自己并不喜欢那种大而全的东西~什么都给你准备好了,自己好像一个机器人一样赶着重复的基本工作,从在学校时候就养成了追究原理的习惯,从而有了这篇session的使用和说明. PS:其实有些总结的东西挺好的,想分享给大家看,而不是枯燥的代码,这东西说实话对其他人用处不大,但都被移除首页了~~ webpy中的session 下面为官方的例子,用session来存储页面访问的次数,从而实现对访问次数的记录. (PS,这里记录是针

python网络编程学习笔记(10):webpy框架_python

django和webpy都是python的web开发框架.Django的主要目的是简便.快速的开发数据库驱动的网站.它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包.这使得Django具有很强的可扩展性.它还强调快速开发和DRY(Do Not Repeat Yourself)原则.webpy小巧,简单,实用,可以快速的完成简单的web页面.这里根据webpy Cookbook简要的介绍一下we

APACHE安装笔记

apache|笔记 作者:车东 摘要: WEB应用容量规划:根据硬件配置和WEB应用的特点进行WEB服务的规划及一些简单的估算公式: APACHE安装过程:apache的通用的简化安装选项,方便以后的应用的模块化配置:修改 HARD_SERVER_LIMIT:vi /path/to/apache_src/src/include/httpd.h#define HARD_SERVER_LIMIT 2560 <===将原来的 HARD_SERVER_LIMIT 256 后面加个"0"a

JetSpeed学习笔记(一)

笔记 JetSpeed学习笔记(一) fuweilin 2005-4-7 前言 参加了公司的portal的兴趣小组,今天对portal进行学习.首先上网看了看一些portal的资料,对portal.portlet.portlet container以及JSR168等概念有个基本的了解.决定进一步实战的方式感受portal,于是学习JetSpeed.     1.  JetSpeed介绍JetSpeed是Apache组织开发的一个采用Java和XML的开放源代码的企业信息门户的实现.门户可以让终端

安装配置bugzilla笔记

因为自己在安装配置的时候走了些弯路,所以一方面自己提个醒,另一方面可以让有这方面需要的朋友做个参考 bugzilla是一个可以发布bug以及跟踪报告bug进展情况的开源软件,有关的官方文档可以查看:http://www.bugzilla.org/docs/ 本人是在RH9上安装配置成功bugzilla-2.18rc3的,事先也成功安装配置过2.16.7,后来发现在2.18中加入了图表的功能,觉得蛮有意思的,所以升级了一下.在安装前先确定自己机器上一些软件版本的情况:perl(5.6 or abo

Nutch 笔记(一):Quick Start

最近用到了nutch,目的是针对指定的一些网站抓取其内容,然后做分析用. nutch 笔记是我使用nutch过程一系列总结,写下自己的学习经过和大家一起分享,也希望能得到大家的指点 好了,废话少说,言归正传,第一篇:Quick Start,我们的目标是快速的能跑起来,能检索出我们想要的结果. 首先要明白nutch是什么? nutch是一个基于lucene的开源搜索引擎,它包括了所有你想要的东西,是一个完整的解决方案 . 一:安装JDK 如果你已经安装了JDK,并且已经设置了JAVA_HOME,那

Akka笔记之日志及测试

英文原文链接,译文链接,原文作者:Arun Manivannan ,译者:有孚 在前两篇笔记中(第一篇,第二篇),我们简单地介绍了一下Actor以及它的消息传递是如何工作的.在本篇中,我们将看下如何解决TeacherActor的日志打印及测试的问题. 简单回顾 前面我们的Actor是这样的: class TeacherActor extends Actor { val quotes = List( "Moderation is for cowards", "Anything

git笔记:通过给grunt-inline打tag看tag操作

晚上review了下grunt-inline的issues,看到有个兄弟pull request,修正了0.3.0版本的一个bug.于是就merge了下,然后发布了0.3.1版本(这里). npm publish后,突然想到一个问题,发布了这么多个版本了,但好像都没有打过tag,这个不利于版本回溯以及bug trace.svn版本管理里有tag的概念,git里八九不离十也有,虽然还没用过.就简单百度了下,打完tag后顺便做下笔记: 查看tag git tag 比如我在grunt-inline的项

性能-一款手写笔记软件的实现方式及问题

问题描述 一款手写笔记软件的实现方式及问题 要实现安卓设备上的手写功能,一种实现方式是:利用安卓的手势识别,主要是GestureOverlayView这个类里的功能和方法,记录用户触摸和移动的轨迹,形成路径path.路径path实际上就是一些点的集合.将这些路径组合成的笔画形成一个bitmap.写入到一个重写过的edittext中,即实现了手写笔记软件的主要功能. 上面实现的手写内容当文字数量比较多时,比如达到1000字左右,就会出现一些性能的问题.比如,想在笔记的中间插入一个手写字,实际执行的