Loading django/shortcuts.py +16 −19 Original line number Diff line number Diff line Loading @@ -6,6 +6,9 @@ for convenience's sake. import warnings from django.template import loader, RequestContext from django.template.context import _current_app_undefined from django.template.engine import ( _context_instance_undefined, _dictionary_undefined, _dirs_undefined) from django.http import HttpResponse, Http404 from django.http import HttpResponseRedirect, HttpResponsePermanentRedirect from django.db.models.base import ModelBase Loading @@ -16,49 +19,43 @@ from django.utils import six from django.utils.deprecation import RemovedInDjango20Warning def render_to_response(*args, **kwargs): def render_to_response(template_name, dictionary=_dictionary_undefined, context_instance=_context_instance_undefined, content_type=None, dirs=_dirs_undefined): """ Returns a HttpResponse whose content is filled with the result of calling django.template.loader.render_to_string() with the passed arguments. """ httpresponse_kwargs = {'content_type': kwargs.pop('content_type', None)} # TODO: refactor to avoid the deprecated code path. with warnings.catch_warnings(): warnings.filterwarnings("ignore", category=RemovedInDjango20Warning) content = loader.render_to_string(*args, **kwargs) content = loader.render_to_string(template_name, dictionary, context_instance, dirs) return HttpResponse(content, **httpresponse_kwargs) return HttpResponse(content, content_type) def render(request, *args, **kwargs): def render(request, template_name, dictionary=_dictionary_undefined, context_instance=_context_instance_undefined, content_type=None, status=None, current_app=_current_app_undefined, dirs=_dirs_undefined): """ Returns a HttpResponse whose content is filled with the result of calling django.template.loader.render_to_string() with the passed arguments. Uses a RequestContext by default. """ httpresponse_kwargs = { 'content_type': kwargs.pop('content_type', None), 'status': kwargs.pop('status', None), } if 'context_instance' in kwargs: context_instance = kwargs.pop('context_instance') if kwargs.get('current_app', None): if context_instance is not _context_instance_undefined: if current_app is not _current_app_undefined: raise ValueError('If you provide a context_instance you must ' 'set its current_app before calling render()') else: current_app = kwargs.pop('current_app', None) context_instance = RequestContext(request, current_app=current_app) kwargs['context_instance'] = context_instance # TODO: refactor to avoid the deprecated code path. with warnings.catch_warnings(): warnings.filterwarnings("ignore", category=RemovedInDjango20Warning) content = loader.render_to_string(*args, **kwargs) content = loader.render_to_string(template_name, dictionary, context_instance, dirs) return HttpResponse(content, **httpresponse_kwargs) return HttpResponse(content, content_type, status) def redirect(to, *args, **kwargs): Loading django/template/context.py +8 −2 Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ from copy import copy # Hard-coded processor for easier use of CSRF protection. _builtin_context_processors = ('django.template.context_processors.csrf',) _current_app_undefined = object() class ContextPopException(Exception): "pop() has been called more times than push()" Loading Loading @@ -117,8 +119,11 @@ class BaseContext(object): class Context(BaseContext): "A stack container for variable context" def __init__(self, dict_=None, autoescape=True, current_app=None, def __init__(self, dict_=None, autoescape=True, current_app=_current_app_undefined, use_l10n=None, use_tz=None, engine=None): if current_app is _current_app_undefined: current_app = None self.autoescape = autoescape self.current_app = current_app self.use_l10n = use_l10n Loading Loading @@ -176,7 +181,8 @@ class RequestContext(Context): Additional processors can be specified as a list of callables using the "processors" keyword argument. """ def __init__(self, request, dict_=None, processors=None, current_app=None, def __init__(self, request, dict_=None, processors=None, current_app=_current_app_undefined, use_l10n=None, use_tz=None, engine=None): Context.__init__(self, dict_, current_app=current_app, use_l10n=use_l10n, use_tz=use_tz, engine=engine) Loading Loading
django/shortcuts.py +16 −19 Original line number Diff line number Diff line Loading @@ -6,6 +6,9 @@ for convenience's sake. import warnings from django.template import loader, RequestContext from django.template.context import _current_app_undefined from django.template.engine import ( _context_instance_undefined, _dictionary_undefined, _dirs_undefined) from django.http import HttpResponse, Http404 from django.http import HttpResponseRedirect, HttpResponsePermanentRedirect from django.db.models.base import ModelBase Loading @@ -16,49 +19,43 @@ from django.utils import six from django.utils.deprecation import RemovedInDjango20Warning def render_to_response(*args, **kwargs): def render_to_response(template_name, dictionary=_dictionary_undefined, context_instance=_context_instance_undefined, content_type=None, dirs=_dirs_undefined): """ Returns a HttpResponse whose content is filled with the result of calling django.template.loader.render_to_string() with the passed arguments. """ httpresponse_kwargs = {'content_type': kwargs.pop('content_type', None)} # TODO: refactor to avoid the deprecated code path. with warnings.catch_warnings(): warnings.filterwarnings("ignore", category=RemovedInDjango20Warning) content = loader.render_to_string(*args, **kwargs) content = loader.render_to_string(template_name, dictionary, context_instance, dirs) return HttpResponse(content, **httpresponse_kwargs) return HttpResponse(content, content_type) def render(request, *args, **kwargs): def render(request, template_name, dictionary=_dictionary_undefined, context_instance=_context_instance_undefined, content_type=None, status=None, current_app=_current_app_undefined, dirs=_dirs_undefined): """ Returns a HttpResponse whose content is filled with the result of calling django.template.loader.render_to_string() with the passed arguments. Uses a RequestContext by default. """ httpresponse_kwargs = { 'content_type': kwargs.pop('content_type', None), 'status': kwargs.pop('status', None), } if 'context_instance' in kwargs: context_instance = kwargs.pop('context_instance') if kwargs.get('current_app', None): if context_instance is not _context_instance_undefined: if current_app is not _current_app_undefined: raise ValueError('If you provide a context_instance you must ' 'set its current_app before calling render()') else: current_app = kwargs.pop('current_app', None) context_instance = RequestContext(request, current_app=current_app) kwargs['context_instance'] = context_instance # TODO: refactor to avoid the deprecated code path. with warnings.catch_warnings(): warnings.filterwarnings("ignore", category=RemovedInDjango20Warning) content = loader.render_to_string(*args, **kwargs) content = loader.render_to_string(template_name, dictionary, context_instance, dirs) return HttpResponse(content, **httpresponse_kwargs) return HttpResponse(content, content_type, status) def redirect(to, *args, **kwargs): Loading
django/template/context.py +8 −2 Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ from copy import copy # Hard-coded processor for easier use of CSRF protection. _builtin_context_processors = ('django.template.context_processors.csrf',) _current_app_undefined = object() class ContextPopException(Exception): "pop() has been called more times than push()" Loading Loading @@ -117,8 +119,11 @@ class BaseContext(object): class Context(BaseContext): "A stack container for variable context" def __init__(self, dict_=None, autoescape=True, current_app=None, def __init__(self, dict_=None, autoescape=True, current_app=_current_app_undefined, use_l10n=None, use_tz=None, engine=None): if current_app is _current_app_undefined: current_app = None self.autoescape = autoescape self.current_app = current_app self.use_l10n = use_l10n Loading Loading @@ -176,7 +181,8 @@ class RequestContext(Context): Additional processors can be specified as a list of callables using the "processors" keyword argument. """ def __init__(self, request, dict_=None, processors=None, current_app=None, def __init__(self, request, dict_=None, processors=None, current_app=_current_app_undefined, use_l10n=None, use_tz=None, engine=None): Context.__init__(self, dict_, current_app=current_app, use_l10n=use_l10n, use_tz=use_tz, engine=engine) Loading