- make blueprint add_route method support view instance

- update documentation that doesn't specify url_prefix parameter
This commit is contained in:
growingdever 2017-02-14 14:23:22 +09:00
parent 1866e4ef44
commit d57d90fe6b
2 changed files with 10 additions and 6 deletions

View File

@ -131,8 +131,8 @@ can be used to implement our API versioning scheme.
from sanic.response import text from sanic.response import text
from sanic import Blueprint from sanic import Blueprint
blueprint_v1 = Blueprint('v1') blueprint_v1 = Blueprint('v1', url_prefix='/v1')
blueprint_v2 = Blueprint('v2') blueprint_v2 = Blueprint('v2', url_prefix='/v2')
@blueprint_v1.route('/') @blueprint_v1.route('/')
async def api_v1_root(request): async def api_v1_root(request):

View File

@ -1,5 +1,6 @@
from collections import defaultdict, namedtuple from collections import defaultdict, namedtuple
from sanic.constants import HTTP_METHODS
FutureRoute = namedtuple('Route', ['handler', 'uri', 'methods', 'host']) FutureRoute = namedtuple('Route', ['handler', 'uri', 'methods', 'host'])
FutureListener = namedtuple('Listener', ['handler', 'uri', 'methods', 'host']) FutureListener = namedtuple('Listener', ['handler', 'uri', 'methods', 'host'])
@ -82,15 +83,18 @@ class Blueprint:
return handler return handler
return decorator return decorator
def add_route(self, handler, uri, methods=None, host=None): def add_route(self, handler, uri, methods=frozenset({'GET'}), host=None):
""" """
Creates a blueprint route from a function. Creates a blueprint route from a function.
:param handler: Function to handle uri request. :param handler: function or class instance to handle uri request.
:param uri: Endpoint at which the route will be accessible. :param uri: Endpoint at which the route will be accessible.
:param methods: List of acceptable HTTP methods. :param methods: List of acceptable HTTP methods.
:return: function or class instance
""" """
route = FutureRoute(handler, uri, methods, host) # Handle HTTPMethodView differently
self.routes.append(route) if hasattr(handler, 'view_class'):
methods = frozenset(HTTP_METHODS)
self.route(uri=uri, methods=methods, host=host)(handler)
return handler return handler
def listener(self, event): def listener(self, event):