From 448932c6598006c2b9b3c7010661e7815b92656a Mon Sep 17 00:00:00 2001 From: Ludwig Kraatz Date: Sat, 1 Dec 2012 13:51:05 +0100 Subject: [PATCH] Support custom Context Class in renderers --- rest_framework/renderers.py | 10 ++++++---- rest_framework/settings.py | 4 ++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index 25a32baae..108c3653c 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -10,7 +10,7 @@ import copy import string from django import forms from django.http.multipartparser import parse_header -from django.template import RequestContext, loader, Template +from django.template import loader, Template from django.utils import simplejson as json from rest_framework.compat import yaml from rest_framework.exceptions import ConfigurationError @@ -28,7 +28,9 @@ class BaseRenderer(object): All renderers should extend this class, setting the `media_type` and `format` attributes, and override the `.render()` method. """ - + + context_class = api_settings.DEFAULT_CONTEXT_CLASS + media_type = None format = None @@ -197,7 +199,7 @@ class TemplateHTMLRenderer(BaseRenderer): def resolve_context(self, data, request, response): if response.exception: data['status_code'] = response.status_code - return RequestContext(request, data) + return self.context_class(request, data) def get_template_names(self, response, view): if response.template_name: @@ -433,7 +435,7 @@ class BrowsableAPIRenderer(BaseRenderer): breadcrumb_list = get_breadcrumbs(request.path) template = loader.get_template(self.template) - context = RequestContext(request, { + context = self.context_class(request, { 'content': content, 'view': view, 'request': request, diff --git a/rest_framework/settings.py b/rest_framework/settings.py index ee24a4ad9..5de19d965 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -54,6 +54,9 @@ DEFAULTS = { 'user': None, 'anon': None, }, + + 'DEFAULT_CONTEXT_CLASS': + 'django.template.RequestContext', # Pagination 'PAGINATE_BY': None, @@ -84,6 +87,7 @@ IMPORT_STRINGS = ( 'DEFAULT_AUTHENTICATION_CLASSES', 'DEFAULT_PERMISSION_CLASSES', 'DEFAULT_THROTTLE_CLASSES', + 'DEFAULT_CONTEXT_CLASS', 'DEFAULT_CONTENT_NEGOTIATION_CLASS', 'DEFAULT_MODEL_SERIALIZER_CLASS', 'DEFAULT_PAGINATION_SERIALIZER_CLASS',