摘要:
问题如何操作web.py自带的webserver的日志?解法我们可以用wsgilog来操作内置的webserver的日志,并做其为中间件加到应用中。如下,写一个Log类继承wsgilog.WsgiLog,在_init_中把参数传给基类,如这个例子:import sys, loggingfrom wsgilog import WsgiLog, LogIOimport configclass Log(WsgiLog): def __init__(self, application): WsgiLog.__init__( self, a... 阅读全文
随笔分类 - python
Web.py Cookbook 简体中文版 - 上传文件大小限定
2012-11-23 11:12 by justjavac, 214 阅读, 收藏, 编辑
摘要:
问题如何限定上传文件的大小?Solutionweb.py 使用cgi模块来解析用户的输入, 而cgi模块对最大输入大小有限制。下面的代码限制了最大数据输入为 10MB.import cgi# Maximum input we will accept when REQUEST_METHOD is POST# 0 ==> unlimited inputcgi.maxlen = 10 * 1024 * 1024 # 10MB请注意这是对POST方法提交数据大小的限制,而不是上传文件大小。当然如果表单中没有其他输入数据,上传文件完全可以达到限制的大小。cgi模块将会抛出ValueError异常, 阅读全文
Web.py Cookbook 简体中文版 - 从post读取原始数据
2012-11-23 11:11 by justjavac, 193 阅读, 收藏, 编辑
摘要:
介绍有时候,浏览器会通过post发送很多数据。在webpy,你可以这样操作。代码class RequestHandler(): def POST(): data = web.data() # 通过这个方法可以取到数据 阅读全文
Web.py Cookbook 简体中文版 - deploying web.py with nginx and mod_wsgi
2012-11-23 11:11 by justjavac, 128 阅读, 收藏, 编辑
摘要:
t is possible to deploy web.py with nginx using a mod_wsgi similar to the module for Apache.After compiling and installing nginx with mod_wsgi, you can easily get a web.py app up and running with the following config* (edit the paths and settings with your own):wsgi_python_executable /usr/bin/pytho. 阅读全文
Web.py Cookbook 简体中文版 - 使用Apache + mod_wsgi部署webpy应用
2012-11-23 11:11 by justjavac, 255 阅读, 收藏, 编辑
摘要:
下面的步骤在Apache-2.2.3 (Red Hat Enterprise Linux 5.2, x86_64),mod_wsgi-2.0中测试通过。(译者注:本人在Windows2003 + Apache-2.2.15 + mod_wsgi-3.0也测试通过)注意:您可以使用您自己的项目名称替换’appname’。您可以使用您自己的文件名称替换’code.py’。/var/www/webpy-app 为包含您的code.py的文件夹目录路径。/var/www/webpy-app/code.py 是您的python文件的完整路径。步骤:下载和安装mod_wsgi从它的网站:http://co 阅读全文
Web.py Cookbook 简体中文版 - sqlalchemy
2012-11-23 11:10 by justjavac, 269 阅读, 收藏, 编辑
摘要:
问题如何在web.py中使用sqlalchemy方案创建一个钩子并使用sqlalchemy的scoped session(http://www.sqlalchemy.org/docs/05/session.html#unitofwork_contextual)import stringimport randomimport webfrom sqlalchemy.orm import scoped_session, sessionmakerfrom models import *urls = ( "/", "add", "/view", 阅读全文
Web.py Cookbook 简体中文版 - 跳转(seeother)与重定向(redirect)
2012-11-23 11:10 by justjavac, 373 阅读, 收藏, 编辑
摘要:
web.seeother 和 web.redirect问题在处理完用户输入后(比方说处理完一个表单),如何跳转到其他页面?解法class SomePage: def POST(self): # Do some application logic here, and then: raise web.seeother('/someotherpage')POST方法接收到一个post并完成处理之后,它将给浏览器发送一个303消息和新网址。接下来,浏览器就会对这个新网址发出GET请求,从而完成跳转。注意:web.seeother和web.redirect不支持0.3以... 阅读全文
Web.py Cookbook 简体中文版 - 提供静态文件 (诸如js脚本, css样式表和图象文件)
2012-11-23 11:09 by justjavac, 344 阅读, 收藏, 编辑
摘要:
问题如何在web.py自带的web server中提供静态文件访问?解法在当前应用的目录下,创建一个名为static的目录,把要提供访问的静态文件放在里面即可。例如, 网址http://localhost/static/logo.png将发送./static/logo.png给客户端。 阅读全文
Web.py Cookbook 简体中文版 - 用cherrypy提供SSL支持
2012-11-23 11:09 by justjavac, 213 阅读, 收藏, 编辑
摘要:
问题如何用内置的cheerypy提供SSL支持?解法import webfrom web.wsgiserver import CherryPyWSGIServerCherryPyWSGIServer.ssl_certificate = "path/to/ssl_certificate"CherryPyWSGIServer.ssl_private_key = "path/to/ssl_private_key"urls = ("/.*", "hello")app = web.application(urls, glob 阅读全文
Web.py Cookbook 简体中文版 - 整合 SQLite UDF (用户定义函数) 到 webpy 数据库层
2012-11-23 11:09 by justjavac, 367 阅读, 收藏, 编辑
摘要:
问题:用户在邮件列表中询问,我把它放在这里作为将来使用和参考。解决:您可以添加到Python函数到SQLite,并让它们在您的查询调用。示例:>>> import sqlite3 as db>>> conn = db.connect(":memory:")>>> conn.create_function("sign", 1, lambda val: val and (val > 0 and 1 or -1))>>> cur = conn.cursor()>>> 阅读全文
Web.py Cookbook 简体中文版 - 保存上传的文件
2012-11-23 11:08 by justjavac, 222 阅读, 收藏, 编辑
摘要:
问题上传文件,并将其保存到预先设定的某个目录下。方法import weburls = ('/upload', 'Upload')class Upload: def GET(self): web.header("Content-Type","text/html; charset=utf-8") return """<html><head></head><body><form method="POST" enctype=&q 阅读全文
Web.py Cookbook 简体中文版 - 在webpy中使用Cheetah模板引擎
2012-11-23 11:07 by justjavac, 297 阅读, 收藏, 编辑
摘要:
问题:怎样在webpy中使用Cheetah模板引擎?解决:您需要先安装webpy(0.3)和Cheetah:http://www.cheetahtemplate.org/. 然后尝试使用下面的代码段:# encoding: utf-8# File: code.pyimport webfrom web.contrib.template import render_cheetahrender = render_cheetah('templates/')urls = ( '/(first)', 'first', '/(second)', 阅读全文
Web.py Cookbook 简体中文版 - 使用子应用
2012-11-23 11:07 by justjavac, 92 阅读, 收藏, 编辑
摘要:
问题如何在当前应用中包含定义在其他文件中的某个应用?解法在blog.py中:import weburls = ( "", "reblog", "/(.*)", "blog")class reblog: def GET(self): raise web.seeother('/')class blog: def GET(self, path): return "blog " + pathapp_blog = web.application(urls, locals())当前的主应用c 阅读全文
Web.py Cookbook 简体中文版 - 如何流传输大文件
2012-11-23 11:07 by justjavac, 281 阅读, 收藏, 编辑
摘要:
问题如何流传输大文件?解法要流传输大文件,需要添加传输译码(Transfer-Encoding)区块头,这样才能一边下载一边显示。否则,浏览器将缓冲所有数据直到下载完毕才显示。如果这样写:直接修改基础字符串(例中就是j),然后用Yield返回--是没有效果的。如果要使用Yield,就要向对所有内容使用yield。因为这个函式此时是一个产生器。(注:请处请详看Yield文档,在此不做过多论述。)例子# Simple streaming server demonstration# Uses time.sleep to emulate a large file readimport webimpor 阅读全文
Web.py Cookbook 简体中文版 - Use Jinja2 template engine in webpy
2012-11-23 11:06 by justjavac, 206 阅读, 收藏, 编辑
摘要:
问题如何在web.py中使用Jinja2模板引擎?方案首先需要安装Jinja2和webpy(0.3), 然后使用下面的代码做测试:import webfrom web.contrib.template import render_jinjaurls = ( '/(.*)', 'hello' )app = web.application(urls, globals())render = render_jinja( 'templates', # 设置模板路径. encoding = 'utf-8', # 编码. )#添加或者修改一些. 阅读全文
Web.py Cookbook 简体中文版 - Import functions into templates
2012-11-23 11:06 by justjavac, 156 阅读, 收藏, 编辑
摘要:
Problem:How can I import a python module in template?Solution:While you write templates, inevitably you will need to write some functions which is related to display logic only. web.py gives you the flexibility to write large blocks of code, including defining functions, directly in the template usi 阅读全文
Web.py Cookbook 简体中文版 - 在webpy中使用Mako模板引擎
2012-11-23 11:05 by justjavac, 223 阅读, 收藏, 编辑
摘要:
问题如何在webpy中使用Mako模板引擎?解决方案首先需要安装Mako和web.py(0.3):http://www.makotemplates.org/ 然后尝试下面的代码:# encoding: utf-8# File: code.pyimport webfrom web.contrib.template import render_makourls = ( '/(.*)', 'hello' )app = web.application(urls, globals(), autoreload=True)# input_encoding and output 阅读全文
Web.py Cookbook 简体中文版 - 怎样使用数据库事务处理
2012-11-23 11:04 by justjavac, 130 阅读, 收藏, 编辑
摘要:
问题:怎样使用数据库事务处理?解决:数据库对象有一个方法“transaction”,将启动一个新的事务,并返回事务对象。这个事务对象可以使用commit提交事务或rollback来回滚事务。import webdb = web.database(dbn="postgres", db="webpy", user="foo", pw="")t = db.transaction()try: db.insert('person', name='foo') db.insert('per 阅读全文
Web.py Cookbook 简体中文版 - 用户认证
2012-11-23 11:02 by justjavac, 154 阅读, 收藏, 编辑
摘要:
问题如何完成一个用户认证系统?解法用户认证系统由这几个部分组成:用户添加,用户登录,用户注销以及验证用户是否已登录。用户认证系统一般都需要一个数据库。在这个例子中,我们要用到MD5和SQLite。#import hashlibimport web def POST(self): i = web.input() authdb = sqlite3.connect('users.db') pwdhash = hashlib.md5(i.password).hexdigest() check = authdb.execute('select * from users wh... 阅读全文
Web.py Cookbook 简体中文版 - 使用字典动态构造where子句
2012-11-23 11:01 by justjavac, 205 阅读, 收藏, 编辑
摘要:
问题你希望创建一个字典来构造动态的where子句并且希望能够在查询语句中使用。解决>>> import web>>> db = web.database(dbn='postgres', db='mydb', user='postgres')>>> where_dict = {'col1': 1, col2: 'sometext'}>>> db.delete('mytable', where=web.db.sqlwhere(whe 阅读全文