def template(template_name, *, app_key=APP_KEY, encoding='utf-8',
headers=None, status=200):
"""
Decorate web-handler to convert returned dict context into sanic.response.Response
filled with template_name template.
:param template_name: template name.
:param request: a parameter from web-handler, sanic.request.Request instance.
:param context: context for rendering.
:param encoding: response encoding, 'utf-8' by default.
:param status: HTTP status code for returned response, 200 (OK) by default.
:param app_key: a optional key for application instance. If not provided,
default value will be used.
"""
def wrapper(func):
@functools.wraps(func)
async def wrapped(*args, **kwargs):
if asyncio.iscoroutinefunction(func):
coro = func
else:
coro = asyncio.coroutine(func)
context = await coro(*args, **kwargs)
if isinstance(context, HTTPResponse):
return context
if isinstance(args[0], HTTPMethodView):
request = args[1]
else:
request = args[0]
return render_template(template_name, request, context,
app_key=app_key, encoding=encoding)
return wrapped
return wrapper
评论列表
文章目录