def renderer(prefix=None, template_ext='html', content_type=settings.DEFAULT_CONTENT_TYPE, do_exception=None):
""" return HttpResponse()
return {'var': value ...}
return 'template' or '/root_template'
return 'template1', 'template2' ...
return 'template', {'var': value ...}
return 'template1', 'template2', ... {'var': value ...}
"""
def do_renderer(func):
@wraps(func)
def wrapper(request, *args, **kwargs):
response = HttpResponse(content_type=content_type)
try:
result = func(request, response, *args, **kwargs)
except HttpReload as e:
return e.response(request, response)
except Exception as e:
if do_exception:
result = do_exception(request, response, e)
else:
raise
if isinstance(result, HttpResponse):
return result
response.content = render_to_string(request, result, func.__name__.rstrip('_'), prefix, template_ext)
return response
return wrapper
return do_renderer
评论列表
文章目录