蜈蚣是一种wsgi微框架,带有一个简单的基于decorator的路由器。

centipede的Python项目详细描述


蜈蚣是一种WSGI微框架,带有一个简单的基于decorator的路由器它的优势在于,它对使用中的技术进行了建模,并试图避免将开发人员与复杂的模式和技巧混淆。它从urlrelay强继承。

安装

$ pip install centipede

定义处理程序

使用蜈蚣,可以将函数公开到url。函数返回stringtuple。字符串被视为文档体,http状态设置为200 OK并返回到浏览器如果返回元组,则需要status codebodyheadersexpose decorator还支持一些参数。

from centipede import expose, app

@expose('^/$')
def index(request):
    """ Simple Hello
    """
    return 'Hello IgglePigglePartyPants!'

@expose('^/google$')
def index(request):
    """ A redirect
    """
    return (307, '', {'Location':'http://google.com'})

import json

@expose('^/twitter','POST',content_type='application/json')
def tweet_post(request):
    """ Tweet
    """
    data  = request['data']
    text  = data['text']
    user  = data['user']
    tweet = magic.tweet(text, user)
    return json.dumps(tweet)

@expose('^/twitter/(?P<tweet>\w+)$','GET',content_type='application/json')
def twitter(request):
    """ Get a tweet
    """
    id    = req['wsgiorg.routing_args'][1]['tweet']
    meta  = request['params']['metadata']
    tweet = magic.get_tweet(id, meta=meta)
    return json.dumps(tweet)

application = app()

公开参数

暴露的装饰器如下所示:

expose(url_pattern, method='GET', content_type='text/html', charset='UTF-8')

请求

传递给公开的函数(request在上面的示例中)的参数是wsgienviron字典。为了方便起见,查询字符串参数表单数据参数打包到环境的paramsdata键中。

查询字符串数据

为了方便起见,查询字符串参数可用作环境的params键中的字典。键和值都是使用urllib.unquote取消引用的。未引用的参数将传递给params_raw键。

表格数据

为了方便起见,表单数据可以作为environ的data键中的字典使用键和值都是使用urllib.unquote\u plus取消引用的未引用的参数传递给data_raw

模板

我建议在客户端保持html模板的静态,并使用javascript模板库。但如果你真的需要一些服务器端模板,看看Mako。

静态文件

对于生产环境,您应该始终直接从web服务器或varnish缓存或其他地方托管静态文件但出于开发目的,您可以让蜈蚣通过传递a p p参数来提供静态文件:

app('path/to/static')

展开

对于部署,最好在一个好的wsgi服务器后面运行蜈蚣应用程序。有一个bunchGunicorn很好。我通常在nginx后面跑uwsgi

更改日志

0.2.5

  • 分隔查询字符串参数和表单数据
  • data键中形成数据
  • 查询params键中的字符串参数
  • 改进了对参数解包的错误处理(需要更多工作)

0.2.4

  • 为post参数添加了urllib.unquote_plus。
  • 在environ中添加了params_raw键,以防urllib.unquote弄乱参数。

0.2.3

  • 在environ中添加了params键,以便于参数访问。
  • 为参数添加了urllib.unquote

享受吧。

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

推荐PyPI第三方库


热门话题
解释java选择方法   连接到127.0.0.1的java间歇性故障,连接到IP(eth0)时没有故障   java如何优雅地杀死hadoop作业/intercept`hadoop作业杀死`   java如何通过引导类加载器以编程方式加载另一个类?   url Java:在查询参数之前使用片段构建URI   在BroadLeaf表blc_order_属性中保存OrderAttributes值时发生java错误   安卓将功能从xml转换为java   java如何将数据写入文件?   java JPA SQL结果映射   Java中整数对象比较运算符的引用安全性   Spring测试失败:java。lang.NoClassDefFoundError:org/springframework/cglib/transform/impl/memorysafuendecaredthrowableStrategy   rich:extendedDataTable中的java行选择和数据处理   java为什么我需要在volatile上对多个线程使用synchronized?   java尽管构建成功,但为什么会出现此错误?   数组$ArrayList不能转换为java。util。java中的ArrayList   java如何根据泛型类型调用方法?   java将JLabel添加到JPanel,将JPanel添加到JFrame   如果MapStruct中的源为null,则java将父目标设置为null   JavaJBossDrools从DRL插入事实   java不同的JRE安装(windows)