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='')

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

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

  1. webpy使用笔记(二) session/sessionid的使用

    webpy使用笔记(二) session的使用 webpy使用系列之session的使用,虽然工作中使用的是django,但是自己并不喜欢那种大而全的东西~什么都给你准备好了,自己好像一个机器人一样赶 ...

  2. webpy学习笔记之中的一个

    这几天在学习webpy框架,之前学过一段时间,后来各种转移框架,导致没有学透彻,都是皮毛,各种打印hello world! 汗! 如今将webpy的学习过程和思路写下来,便于复习和总结. 资料主要是w ...

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

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyi django和webpy都是python的web开发框架.Django的主要目的是简便.快速的开发数据库驱动的网站. ...

  4. 22.python笔记之web框架

    一.web框架本质 1.基于socket,自己处理请求 #!/usr/bin/env python3 #coding:utf8 import socket def handle_request(cli ...

  5. [Firefly引擎][学习笔记三][已完结]所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  6. python web框架学习笔记

    一.web框架本质 1.基于socket,自己处理请求 #!/usr/bin/env python3 #coding:utf8 import socket def handle_request(cli ...

  7. git-简单流程(学习笔记)

    这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...

  8. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  9. SQL Server技术内幕笔记合集

    SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...

随机推荐

  1. python json学习之路2-认识python种的json模块

    1.从python原始类型向json类型的转化过程,具体的转化对照如下: 2.从json到python的类型转化对照如下: 3.json提供四个功能:dumps, dump, loads, load ...

  2. linux crontab命令参数及用法详解--linux自动化定时任务cron

    声明:本文转自Linux 安全网,在此基础上加上自己的体会! crontab 命令 如果发现您的系统里没有这个命令,在ubuntu server 中用的是 sudo apt-get install c ...

  3. step6----->往工程中添加spring boot项目------->修改pom.xml使得我的project是基于spring boot的,而非直接基于spring framework

    文章内容概述: spring项目组其实有多个projects,如spring IO platform用于管理external dependencies的版本,通过定义BOM(bill of mater ...

  4. arm上的参数列表传递的分析(以android为例)

    1. Linux中可变列表实现的源码分析 查看Linux0.11的内核源代码,对va_list, va_start, va_arg 的实现如下: va_list的实现没有差别,chartypedef ...

  5. oracle学习-存储过程返回一个值,和返回一个结果集

    一.返回一个值 --创建存储过程 create or replace procedure sp_hu_test(spcode in varchar2,spname out varchar2)is be ...

  6. 决策树算法(1)含java源代码

    信息熵:变量的不确定性越大,熵越大.熵可用下面的公式描述:-(p1*logp1+p2*logp2+...+pn*logpn)pi表示事件i发生的概率ID3:GAIN(A)=INFO(D)-INFO_A ...

  7. Android的Activity屏幕切换动画-左右滑动切换

    . --> 在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下如何实现左右滑动的切换效果,首先了解一下Activity切换的实现,从Android2.0开始 ...

  8. zendstudio 声明变量类型,让变量自动方法提示

    zendstudio 行内注释, 显式声明变量类型,让变量自动方法提示 $out = []; /* @var $row \xxyy\SizeEntity */ foreach ($rows[ 'lis ...

  9. unreal3脚本stacktrace的问题

    在unrealscript里获取调用栈,有下面两函数: /** * Dumps the current script function stack to the log file, useful * ...

  10. Browser增加下载路径选择功能

    SWE Browser中有xml/download_settings_preferences.xml, 但在代码中却没有调用,导致“设置”中没有”选择下载路径“功能. 在com.android.bro ...