蜈蚣是一种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使用EntityManager有没有更有效的习惯用法?   Android上的java Google应用程序引擎(GAE)响应代码和cookie   如何在Java中创建单元测试?   java从DB获取特定列的最新行   java替换所有悬空元字符   java使用Hibernate删除SQL表中的数据   swing显示JComponent对象Java   java在确认内容类型后如何将URL保存到文件?   javascript如何从段落中选择大量单词?(硒)   java在Linux上使用BundleEnableTiveCode不起作用   java使用日志似然性来比较不同的mallet主题模型?   java无法在Tomcat7上运行Spring Boot 2.0:“由于缺少ServletWebServerFactory bean,无法启动ServletWebServerApplicationContext。”   java有办法显式引用非静态内部类实例吗?   java如何使用Spring的NamedParameterJdbcTemplate在MySQL数据库中创建和删除表?