Web.py Cookbook 简体中文版 - 使用字典动态构造where子句

justjavac 发表于 2012-04-19

问题

你希望创建一个字典来构造动态的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(where_dict), _test=True) <sql: "DELETE FROM mytable WHERE col1 = 1 AND col2 = 'sometext'">

解释

web.db.sqlwhere...

Web.py Cookbook 简体中文版 - 用soaplib实现webservice

justjavac 发表于 2012-04-19

问题

如何用soaplib实现webservice?

解法

Optio的soaplib通过用装饰器指定类型,从而直接编写SOAP web service。而且它也是到目前为止,唯一为web service提供WSDL文档的Python类库。

import web from soaplib.wsgi_soap import SimpleWSGISoapApp from soaplib.service import soapmethod from soaplib.serializers import primitive as soap_types urls = ("/hello", "HelloService", "/hello.wsdl", "HelloService", ) render = web.template.Template("$def with (var)\n$:var") class SoapService(SimpleWSGISoapApp):...

Web.py Cookbook 简体中文版 - 在PostgreSQL下实现用户认证

justjavac 发表于 2012-04-19

问题

  • 如何利用PostgreSQL数据库实现一个用户认证系统?

解法

  • 用户认证系统有很多功能。在这个例子中,将展示如何在PostgreSQL数据库环境下一步一步完成一个用户认证系统

必需

  • 因为要用到make模板和postgreSQL数据库,所以要: import web from web.contrib.template import render_mako import pg

第一步:创建数据库

首先,为创建一个用户表。虽然这个表结构非常简单,但对于大部分项目来说都足够用了。

#

CREATE TABLE example_users ( id serial NOT NULL, user character varying(80) NOT...

Web.py Cookbook 简体中文版 - 用户认证

justjavac 发表于 2012-04-19

原作者没有写完,但是可以参照下一节,写得很详细

问题

如何完成一个用户认证系统?

解法

用户认证系统由这几个部分组成:用户添加,用户登录,用户注销以及验证用户是否已登录。用户认证系统一般都需要一个数据库。在这个例子中,我们要用到MD5和SQLite。

#

import hashlib import web def POST(self): i = web.input() authdb = sqlite3.connect('users.db') pwdhash = hashlib.md5(i.password).hexdigest() check = authdb.execute('select * from users where username=? and password=?', (i.username, pwdhash)) if check: session.loggedin...

Web.py Cookbook 简体中文版 - 理解URL控制

justjavac 发表于 2012-04-19

问题: 如何为整个网站设计一个URL控制方案 / 调度模式

解决:

web.py的URL控制模式是简单的、强大的、灵活的。在每个应用的最顶部,你通常会看到整个URL调度模式被定义在元组中:

urls = ( "/tasks/?", "signin", "/tasks/list", "listing", "/tasks/post", "post", "/tasks/chgpass", "chgpass", "/tasks/act", "actions", "/tasks/logout", "logout", "/tasks/signup", "signup" )

这些元组的格式是: URL路径, 处理类 这组定义有多少可以定义多少。如果你并不知道URL路径和处理类之间的关系,请在阅读cookbook之前先阅读Hello World example,或者快速入门

路径匹配

你可以利用强大的正则表达式去设计更灵活的URL路径。比如 /(test1|test2) 可以捕捉 /test1 或 /test2。要理解这里的关键,匹配是依据URL路径的。比如下面的URL:

http://localhost/myapp/greetings/hello?name=Joe
...