用于构建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()已被删除。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java结合两个Date实例使用Joda创建datetime   带有POI和FileOutputStream的java Swing应用程序性能问题   Java中是否存在类似于Python的异常?   Java中有界通配符的泛型   使用字符和子字符串的java不同输出   在Java中获取LDAP模式   java自定义类在自身上生成ClassNotFoundException   java连接到从internet到通过LAN连接到internet的系统的serversocket   java如何通过maven在jaxws中使用jaxb插件?   java Kerberos如何获取主体或客户端名称?   java应用服务器中是否有JDBC的单点登录解决方案?   java是存储矩阵值以便以后访问的更好方法   Java等级计算器。开始这门课我需要一些帮助   未找到Android“libc++\u shared.so”中的java OpenCV实现   当我使用web配置部署描述符时使用java。xml。它显示了错误   java为什么我的ArrayList的add方法冲突,如何编辑我的自定义add方法   java创建一个以集合为键的映射?   java如何将用户输入到数字三角形中   为什么Java在读取LinkedHashMap时会自动从字符串转换为整数   类动态创建和读取java类