decoroute

Pattern-matching based WSGI-compliant URL routing tool
Download

decoroute Ranking & Summary

Advertisement

  • Rating:
  • License:
  • LGPL v2
  • Price:
  • FREE
  • Publisher Name:
  • Vsevolod Balashov
  • Publisher web site:
  • http://vsevolod.balashov.name

decoroute Tags


decoroute Description

Pattern-matching based WSGI-compliant URL routing tool decoroute is a decorator-style and pattern-matching based URL routing library. No framework! Very compact. Core logic less 100 lines of code. WSGI compliant. No additional API required.Complete exampleimport decorouteapp = decoroute.App(prefix='')# pure WSGI@app.expose('/wsgi/')@decoroute.wsgi('wsgiorg.routing_args')def wsgi_app(environ, start_response): start_response('200 OK', ) return environ# pass variables into **kwdef render_response(status = '200 OK', content_type = 'text/plain', add_headers = [], **context): return status, + add_headers, context@app.expose('/node', id = '1')@app.expose('/node/')def node(env, id): return render_response(id = id)@app.expose('/url_for')def url_for(env): return render_response(url = app.url_for(node, id = 666))@app.expose('/404')def not_found(env): raise decoroute.NotFound()@app.not_founddef not_found_handler(env): return render_response(status = '404 NF', **env)@app.renderdef render(env, (status, headers, context)): context = '%s://%s' % (env, env) return status, headers, ) for k in context.keys()] # fake templatingfrom wsgiref.simple_server import make_servermake_server('', 6666, app).serve_forever()TipsIf you place your views (Django term. in ror - controller) in another modules, organize code like werkzeug.# utils.pyimport decorouteapp = decoroute.App()# view.py and anoterfrom utils import *@app.renderdef render(env, ...) # returns of your endpoints pass to render handler # in render use your prefered template engine and return triple # status, generator of response headers, generator of response body # ( generator / iterator / list - any ) # if you use default render endpoints must be return triple@app.not_found # no route enpoint # it also pass to render handler@app.expose('/node', id = '1')@app.expose('/node/< id:d+ >')def node(env, id): # endpoint passed some variables # env is a wsgi environ # id = '1' default value of parameter # all parameters must be # < id:d+ > parameter pattern; # d+ specify regexp constraint of parameter (required)# manage.py - main modulefrom utils import appimport view # and all otherif __name__ == '__main__': # serve app here Requirements: · Python


decoroute Related Software