Skip to content

Instantly share code, notes, and snippets.

@oneyoung
Last active January 18, 2021 17:16
Show Gist options
  • Save oneyoung/fae76002d7a92b636bc0 to your computer and use it in GitHub Desktop.
Save oneyoung/fae76002d7a92b636bc0 to your computer and use it in GitHub Desktop.
A customize Falcon Router that support Django like url reverse
from falcon.routing import DefaultRouter
class ReverseRouter(DefaultRouter):
url_map = {}
# override add_route to add our map
def add_route(self, uri_template, method_map, resource, name=None):
if name:
self.url_map[name] = uri_template
DefaultRouter.add_route(self, uri_template, method_map, resource)
def reverse(self, _name, **kwargs):
'''
reverse url
'''
assert _name in self.url_map, "url name: %s not in url map" % _name
url_tmpl = self.url_map.get(_name)
return url_tmpl.format(**kwargs)
# usage example:
import falcon # NOQA
router = ReverseRouter()
api = falcon.API(router=router)
# add a router
api.add_route('/user/{name}', 'user_res', name='user')
# reverse url
print (router.reverse('user', name='mike'))
# /user/mike
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment