Получить текущий запрос из RequestContext? - PullRequest
2 голосов
/ 04 октября 2011

Есть ли у Django RequestContext способ получить объект HttpRequest, с которым он связан? Есть ли у него метод типа get_request() или тому подобное, чтобы получить request, который передается в конструктор? Мне нужно сослаться на него из метода, в котором я получаю только RequestContext.

Ответы [ 2 ]

10 голосов
/ 03 июня 2012

Добавить 'django.core.context_processors.request' к TEMPLATE_CONTEXT_PROCESSORS настройкам.И получите запрос, где контекст доступен, используя:

request = context['request']
1 голос
/ 07 октября 2011

Нет, django.template.RequestContext (который находится в django/template/context.py) не хранит никаких ссылок на объект запроса:

class RequestContext(Context):
    """
    This subclass of template.Context automatically populates itself using
    the processors defined in TEMPLATE_CONTEXT_PROCESSORS.
    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, use_l10n=None):
        Context.__init__(self, dict, current_app=current_app, use_l10n=use_l10n)
        if processors is None:
            processors = ()
        else:
            processors = tuple(processors)
        for processor in get_standard_processors() + processors:
            self.update(processor(request))

Если Django был исправлен, чтобы включить в конструктор простую строку, подобную этой:

self.request = request

и определение функции вроде этого:

def get_request(self):
     return self.request

тогда мы будем в бизнесе.К сожалению, это не так, поэтому ответ «Нет, вы не можете получить объект запроса, связанный с RequestContext».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...