Yet another WSGI web framework


Keywords
WSGI, HTTP, REST
License
MIT
Install
pip install Marnadi==0.5.3

Documentation

marnadi

https://travis-ci.org/renskiy/marnadi.svg?branch=master

Yet another WSGI Web Framework, the simplest and fastest ever written.

Has no dependencies. Works both with Python 2 and Python 3.

Features

  • Support both of functional and object-oriented programming styles
  • Dynamic routes, e.g. "/path/{param}/"
  • Headers, query, data, cookies descriptors
  • Rich extending abilities

Installation

Simply execute following line:

pip install marnadi

"Hello World"

Run this script and open http://localhost:8000/ on your browser:

from marnadi import Response
from marnadi.wsgi import App

application = App()


@application.route('/')
@Response.get
def main_page():
    return 'This is main page'

if __name__ == '__main__':
    from wsgiref.simple_server import make_server
    make_server('', 8000, application).serve_forever()

More complex example

Script below additionally will respond to http://localhost:8000/foo/bar/ and http://localhost:8000/foo/ requests:

from marnadi import Response, Route
from marnadi.wsgi import App


class MainPageResponse(Response):

    def get(self):
        return 'This is main page'


class FooBarResponse(Response):

    def get(self, foo, bar=None):
        return 'foo is {foo}, bar is {bar}'.format(foo=foo, bar=bar)

routes=(
    Route('/', MainPageResponse),
    Route('/{foo}/', FooBarResponse, routes=(
        Route('{bar}/', FooBarResponse),
    )),
)

application = App(routes=routes)

if __name__ == '__main__':
    from wsgiref.simple_server import make_server
    make_server('', 8000, application).serve_forever()