Skip to content

oubiwann/txroutes

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 

Repository files navigation

txroutes

txroutes provides routes-like dispatching for twisted.web.server (it actually depends upon the Python routes codebase).

Frequently, it's much easier to describe your website layout using routes instead of Resource from twisted.web.resource. This small library lets you dispatch with routes in your twisted.web application.

Usage

Here is an example of how to use txroutes:

from twisted.internet import reactor, task
from twisted.web.server import Site, NOT_DONE_YET

from txroutes import Dispatcher


# Create a Controller
class Controller(object):

    def index(self, request):
        return '<html><body>Hello World!</body></html>'

    def docs(self, request, item):
        return '<html><body>Docs for %s</body></html>' % item.encode('utf8')

    def post_data(self, request):
        return '<html><body>OK</body></html>'

    def deferred_example(self, request):
        request.write('<html><body>Wait a tic...</body></html>')
        task.deferLater(reactor, 5, lambda: request.finish())

        return NOT_DONE_YET

c = Controller()

dispatcher = Dispatcher()

dispatcher.connect(name='index', route='/', controller=c, action='index')

dispatcher.connect(name='docs', route='/docs/{item}', controller=c,
        action='docs')

dispatcher.connect(name='data', route='/data', controller=c,
        action='post_data', conditions=dict(method=['POST']))

dispatcher.connect(name='deferred_example', route='/wait', controller=c,
        action='deferred_example')

factory = Site(dispatcher)
reactor.listenTCP(8000, factory)
reactor.run()

Additional Information

About

Provides routes-like dispatching for twisted.web.server

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published