用于构建wsgi应用程序的最小dsl
berr的Python项目详细描述
berry是构建wsgi应用程序的最小dsl。
Berry采用此映射,并生成一个wsgi应用程序,您可以根据自己的喜好为其提供服务。
example
----
这里是一个使用wsgiref服务器的示例,它包含在Python的stdlib
中,非常适合开发使用。
import berry
from wsgiref.simple服务器导入使服务器
@berry.get('^$')
def index(req):
返回"欢迎访问主页。"
@berry.get('^hello/(.+)/?$')
定义hello(req,name):
返回"hello,%s!"%name
生成wsgi app
wsgi app=berry.app
获取/发布与路由匹配的请求。路由必须是正则表达式。
将向函数传递一个请求对象作为第一个参数。
示例:
@berry.get('^$')
@berry.get('^home$')
def home(req):
返回"这是主页。"
tiple路由到同一个函数。
请求对象的有用属性是:
----
-env:wsgi环境变量。
-params:通过get和post传递的参数。
-path:请求的路径,减去初始"/"和查询字符串
-查询:查询字符串,如果有
-完整路径:请求的完整路径,包括初始"/"和
查询字符串
-方法:方法(get或post)
示例:
@berry.post(''^login$')
def login(req):
username=req.params.get('username')
password=req.params.get('password')
例如:
<;input name="person[name]"value="james"/>;
<;input name="person[age]"value="20"/>;
将导致req.params为:
{person':{name':'james','age':'20'}。
rson[friends][]"value="james"/>;
<;input name="person[friends][]"value="john"/>;
将导致req.params为:
{'person':{'friends':['james','john']}}。
处理错误
----
ecorator,您可以创建自定义错误页。
示例:
@berry.error(404)
def not found(req):
return"%s was not found"。%req.fullpath
berry有redirect、forbidden、notfound和apperror类,这些类
是例外继承berry.httperror的。只需引发其中一个:
如果不是用户,则登录:
raise berry.forbidden()
若要为新的http状态代码添加异常,可以执行以下操作:
类未授权(berry.httperror):
状态=(401,"未授权")
content="<;h1>;401未授权<;h1>;"
应用程序错误
---------
如果将berry.debug设置为true,则当代码中出现异常时,将输出回溯。否则,它们将只写入
stderr.
重定向
----
若要重定向,请引发berry。重定向异常:
raise berry.redirect(url)
headers
--
headers,使用berry.header装饰符:
@berry.header('content-type','text/plain')
def download_as_txt(req,id):
…
y
否则,您可以从http://pypi.python.org/pypi/berry
获取最新版本,或者使用git获取最新的开发快照:
git clone git://github.com/adeel/berry.git
,然后:
python setup.py install
如果您尝试Berry,请给我写信至adeel2@umbc.edu,让我知道您的想法。
d of
为您服务。
-便利函数redirect()已被删除。
Berry采用此映射,并生成一个wsgi应用程序,您可以根据自己的喜好为其提供服务。
example
----
这里是一个使用wsgiref服务器的示例,它包含在Python的stdlib
中,非常适合开发使用。
import berry
from wsgiref.simple服务器导入使服务器
@berry.get('^$')
def index(req):
返回"欢迎访问主页。"
@berry.get('^hello/(.+)/?$')
定义hello(req,name):
返回"hello,%s!"%name
生成wsgi app
wsgi app=berry.app
获取/发布与路由匹配的请求。路由必须是正则表达式。
将向函数传递一个请求对象作为第一个参数。
示例:
@berry.get('^$')
@berry.get('^home$')
def home(req):
返回"这是主页。"
tiple路由到同一个函数。
请求对象的有用属性是:
----
-env:wsgi环境变量。
-params:通过get和post传递的参数。
-path:请求的路径,减去初始"/"和查询字符串
-查询:查询字符串,如果有
-完整路径:请求的完整路径,包括初始"/"和
查询字符串
-方法:方法(get或post)
示例:
@berry.post(''^login$')
def login(req):
username=req.params.get('username')
password=req.params.get('password')
例如:
<;input name="person[name]"value="james"/>;
<;input name="person[age]"value="20"/>;
将导致req.params为:
{person':{name':'james','age':'20'}。
rson[friends][]"value="james"/>;
<;input name="person[friends][]"value="john"/>;
将导致req.params为:
{'person':{'friends':['james','john']}}。
处理错误
----
ecorator,您可以创建自定义错误页。
示例:
@berry.error(404)
def not found(req):
return"%s was not found"。%req.fullpath
berry有redirect、forbidden、notfound和apperror类,这些类
是例外继承berry.httperror的。只需引发其中一个:
如果不是用户,则登录:
raise berry.forbidden()
若要为新的http状态代码添加异常,可以执行以下操作:
类未授权(berry.httperror):
状态=(401,"未授权")
content="<;h1>;401未授权<;h1>;"
应用程序错误
---------
如果将berry.debug设置为true,则当代码中出现异常时,将输出回溯。否则,它们将只写入
stderr.
重定向
----
若要重定向,请引发berry。重定向异常:
raise berry.redirect(url)
headers
--
headers,使用berry.header装饰符:
@berry.header('content-type','text/plain')
def download_as_txt(req,id):
…
y
否则,您可以从http://pypi.python.org/pypi/berry
获取最新版本,或者使用git获取最新的开发快照:
git clone git://github.com/adeel/berry.git
,然后:
python setup.py install
如果您尝试Berry,请给我写信至adeel2@umbc.edu,让我知道您的想法。
d of
为您服务。
-便利函数redirect()已被删除。