摘要:
欢迎来到web.py 0.3的Cookbook。提醒您注意:某些特性在之前的版本中并不可用。当前开发版本是0.3。格式在编排内容时,请尽量使用cookbook格式…如:###问题:如何访问数据库中的数据?###解法:使用如下代码…请注意,网址中不必含有”web”。如”/cookbook/select”,而非”/cookbook/web.select”。该手册适用于0.3版本,所以您在添加代码时,请确认代码能在新版本中工作。基本应用:Hello World提供静态文件访问理解URL控制跳转与重定向使用子应用提供XML访问从post读取原始数据高级应用用web.ctx获得客户端信息应用处理器,添加 阅读全文
随笔分类 - python
Web.py Cookbook 简体中文版 - 交替风格
2012-11-26 10:10 by justjavac, 212 阅读, 收藏, 编辑
摘要:
问题:你想通过数据集合动态的生成交替背景色的列表.方法:Give templetor access to theintbuilt-in and use modulo to test.code.pyweb.template.Template.globals['int'] = inttemplate.html<ul>$var i: 0$for track in tracks: $var i: ${int(self.i) + 1} <li class=" $if int(self.i) % 2: odd $else: even ">$tra 阅读全文
Web.py Cookbook 简体中文版 - 如何使用web.background
2012-11-26 10:10 by justjavac, 233 阅读, 收藏, 编辑
摘要:
注意!!web.backgrounder已转移到web.py 3.X实验版本中,不再是发行版中的一部分。你可以在这里下载,要把它与application.py放置在同一目录下才能正运行。介绍web.background和web.backgrounder都是python装饰器,它可以让某个函式在一个单独的background线程中运行,而主线程继续处理当前的HTTP请求,并在稍后报告background线程的状态(事实上,后台函式的标准输出(stdout)被返回给启动该线程的”backrounder”)。 译注:我本来想将background thread翻译为后台线程,后来认为作者本意是想表达 阅读全文
Web.py Cookbook 简体中文版 - Application processors
2012-11-26 10:10 by justjavac, 145 阅读, 收藏, 编辑
摘要:
问题如何使用应用处理器,加载钩子(loadhooks)和卸载钩子(unloadhook)?解法web.py可以在处理请求之前或之后,通过添加处理器(processor)来完成某些操作。def my_processor(handler): print 'before handling' result = handler() print 'after handling' return resultapp.add_processor(my_processor)可以用加载钩子(loadhook)和卸载钩子(unloadhook)的方式来完成同样的操作,它们分别在请求开始 阅读全文
Web.py Cookbook 简体中文版 - 如何操作Cookie
2012-11-26 10:09 by justjavac, 169 阅读, 收藏, 编辑
摘要:
问题如何设置和获取用户的Cookie?解法对web.py而言,设置/获取Cookie非常方便。设置Cookies概述setcookie(name, value, expires="", domain=None, secure=False): name(string)- Cookie的名称,由浏览器保存并发送至服务器。value(string)-Cookie的值,与Cookie的名称相对应。expires(int)- Cookie的过期时间,这是个可选参数,它决定cookie有效时间是多久。以秒为单位。它必须是一个整数,而绝不能是字符串。domain(string)- Coo 阅读全文
Web.py Cookbook 简体中文版 - CGI deployment on Apache
2012-11-26 10:09 by justjavac, 215 阅读, 收藏, 编辑
摘要:
Here are the simple steps needed to create and run an web.py application.Install web.py and flupsCreate the application as documented if __name__ == "__main__": web.run(urls, globals())For our example, let it be namedapp.py, located in/www/appand we need it accessible ashttp://server/app/a 阅读全文
Web.py Cookbook 简体中文版 - db.delete 数据删除
2012-11-26 10:08 by justjavac, 159 阅读, 收藏, 编辑
摘要:
问题在数据库中删除数据。解决办法import webdb = web.database(dbn='postgres', db='mydata', user='dbuser', pw='')db.delete('mytable', where="id=10")上面接受 “using” 和 “vars” 参数。删除方法返回被删除的影响行数。 阅读全文
Web.py Cookbook 简体中文版 - 自定义NotFound消息
2012-11-26 10:08 by justjavac, 128 阅读, 收藏, 编辑
摘要:
问题如何定义NotFound消息和其他消息?解法import weburls = (...)app = web.application(urls, globals())def notfound(): return web.notfound("Sorry, the page you were looking for was not found.") # You can use template result like below, either is ok: #return web.notfound(render.notfound()) #return web.notf... 阅读全文
Web.py Cookbook 简体中文版 - web.ctx
2012-11-26 10:08 by justjavac, 217 阅读, 收藏, 编辑
摘要:
问题如何在代码中得到客户端信息?比如:来源页面(referring page)或是客户端浏览器类型解法使用web.ctx即可。首先讲一点架构的东西:web.ctx基于threadeddict类,又被叫做ThreadDict。这个类创建了一个类似字典(dictionary-like)的对象,对象中的值都是与线程id相对应的。这样做很妙,因为很多用户同时访问系统时,这个字典对象能做到仅为某一特定的HTTP请求提供数据(因为没有数据共享,所以对象是线程安全的)web.ctx保存每个HTTP请求的特定信息,比如客户端环境变量。假设,我们想知道正在访问某页面的用户是从哪个网页跳转而来的:例子class 阅读全文
Web.py Cookbook 简体中文版 - 通过Fastcgi和lighttpd部署
2012-11-26 10:07 by justjavac, 230 阅读, 收藏, 编辑
摘要:
如果你对这个主题有任何问题,可以点击下面的链接访问相应的话题:http://www.mail-archive.com/webpy@googlegroups.com/msg02800.html下面的代码基于lighttpd 1.4.18,更高版本也可以工作Note:你可以重命名code.py为任何你自己愿意的名字,该例子还是以code.py为例。如果你还不确定你的lighttpd版本的话,你可以在命令行中使用<code>lighttpd -v</vode>查看相应的版本信息。Note: 较早版本的lighttpd可能会按照不同的方式组织.conf文件,但是它们应该遵循的是 阅读全文
Web.py Cookbook 简体中文版 - Web.py using FastCGI and Apache 2
2012-11-26 10:07 by justjavac, 195 阅读, 收藏, 编辑
摘要:
RequirementsApache 2.xmod_fcgidmod_rewriteFlupNote, on CentOS compiling mod_fcgid requires apache-devel be installed (available via yum).Apache ConfigurationReplace ‘/var/www/myapp/’ with the path to your apps directoryLoadModule rewrite_module modules/mod_rewrite.soLoadModule fcgid_module modules/m 阅读全文
Web.py Cookbook 简体中文版 - Webpy + Nginx with FastCGI搭建Web.py
2012-11-23 11:16 by justjavac, 194 阅读, 收藏, 编辑
摘要:
这一节讲解的是如何使用Nginx和FastCGI搭建Web.py应用环境依赖的软件包Nginx 0.8.* or 0.7.* (需要包含fastcgi和rewrite模块)。Webpy 0.32Spawn-fcgi 1.6.2Flup注意:Flup是最常见的忘记装的软件,需要安装更老的版本应该也可以工作,但是没有测试过,最新的是可以工作的一些资源Nginx wikiSpawn-fcgiFlupNotes你可以重命名index.py为任何你想要的文件名。/path/to/www为代码路径。/path/to/www/index.py为python代码的完整路径。Nginx 配置文件location 阅读全文
webpy-cookbook-form-ields.html
2012-11-23 11:15 by justjavac, 221 阅读, 收藏, 编辑
摘要:
问题:怎样在模板中个别显示表单字段?解决:你可以使用’render()’方法在你的模板中显示部分的表单字段。假设你想创建一个名字/姓氏表单。很简单,只有两个字段,不需要验证,只是为了测试目的。from web import formsimple_form = form.Form( form.Textbox('name', description='Name'), form.Textbox('surname', description='Surname'),)通常你可以使用simple_form.render()或simple_fo 阅读全文
Web.py Cookbook 简体中文版 - File Upload Recipe
2012-11-23 11:15 by justjavac, 176 阅读, 收藏, 编辑
摘要:
问题如果你不是很了解表单上传或者CGI的话, 你会觉得文件上传有点奇特.解决方法import weburls = ('/upload', 'Upload')class Upload: def GET(self): return """<html><head></head><body><form method="POST" enctype="multipart/form-data" action=""><inp 阅读全文
Web.py Cookbook 简体中文版 - 怎样使用表单 forms
2012-11-23 11:15 by justjavac, 275 阅读, 收藏, 编辑
摘要:
问题:怎样使用表单 forms解决:‘web.form’模块提供支持创建,校验和显示表单。该模块包含一个’Form’类和各种输入框类如’Textbox’,’Password’等等。当’form.validates()’调用时,可以针对每个输入检测的哪个是有效的,并取得校验理由列表。‘Form’类同样可以使用完整输入附加的关键字参数’validators’来校验表单。这里是一个新用户注册的表单的示例:import webfrom web import formrender = web.template.render('templates') # your templatesvpa 阅读全文
Web.py Cookbook 简体中文版 - 模板文件中的i18n支持
2012-11-23 11:14 by justjavac, 168 阅读, 收藏, 编辑
摘要:
问题:在web.py的模板文件中, 如何得到i18n的支持?Solution:项目目录结构:proj/ |- code.py |- i18n/ |- messages.po |- en_US/ |- LC_MESSAGES/ |- messages.po |- messages.mo |- templates/ |- hello.html文件: proj/code.py#!/usr/bin/env python# encoding: utf-8impor... 阅读全文
Web.py Cookbook 简体中文版 - Hello World!
2012-11-23 11:14 by justjavac, 166 阅读, 收藏, 编辑
摘要:
问题如何用web.py实现Hello World!?解法import weburls = ("/.*", "hello")app = web.application(urls, globals())class hello: def GET(self): return 'Hello, world!'if __name__ == "__main__": app.run()提示:要保证网址有无’/’结尾,都能指向同一个类。就要多写几行代码,如下:在URL开头添加代码:'/(.*)/', 'redire 阅读全文
Web.py Cookbook 简体中文版 - 站点布局模板
2012-11-23 11:13 by justjavac, 228 阅读, 收藏, 编辑
摘要:
问题如何让站点每个页面共享一个整站范围的模板?(在某些框架中,称为模板继承,比如ASP.NET中的母版页)方法我们可以用 base 属性来实现:render = web.template.render('templates/', base='layout')现在如果你调用render.foo()方法,将会加载templates/foo.html模板,并且它将会被templates/layout.html模板包裹。“layout.html” 是一个简单模板格式文件,它包含了一个模板变量,如下:$def with (content)<html><h 阅读全文
Web.py Cookbook 简体中文版 - db.insert 向数据库中新增数据
2012-11-23 11:13 by justjavac, 165 阅读, 收藏, 编辑
摘要:
问题如何向数据加新增数据?解决办法在 0.3 中,数据库连接如下:db = web.database(dbn='postgres', db='mydata', user='dbuser', pw='')数据库连接写好以后,“insert” 操作如下:# 向 'mytable' 表中插入一条数据sequence_id = db.insert('mytable', firstname="Bob",lastname="Smith",joindate=web.SQLL 阅读全文
Web.py Cookbook 简体中文版 - web.input
2012-11-23 11:13 by justjavac, 203 阅读, 收藏, 编辑
摘要:
web.input问题如何从form或是url参数接受用户数据.解决方法web.input()方法返回一个包含从url(GET方法)或http header(POST方法,即表单POST)获取的变量的web.storage对象(类似字典).举个例子,如果你访问页面http://example.com/test?id=10,在Python后台你想取得 id=10 ,那么通过web.input()那就是小菜一碟:class SomePage: def GET(self): user_data = web.input() return "<h1>" + user_d. 阅读全文