Это происходит потому, что request
не находится в контексте вашего шаблона, и шаблон использует некоторый код шаблона, который ожидал его там.Этот код (например, пользовательский тег шаблона) должен лучше обрабатывать VariableDoesNotExist
Кроме того, ваши взгляды, вероятно, не должны явно возвращать request
в каждом ответе.Позвольте Django обработать это для вас.
Для этого добавьте процессор контекста шаблона запроса *1011*, который поставляется с Django, к вашему TEMPLATE_CONTEXT_PROCESSORS
:
TEMPLATE_CONTEXT_PROCESSORS = (
...
'django.core.context_processors.request',
...
)
Если вы уже используете этот процессор контекста шаблона, убедитесь, что render_to_response
вызывается с context_instance=RequestContext(request)
в качестве последнего аргумента (приведенный ниже пример взят из docs ):
def some_view(request):
# ...
return render_to_response('my_template.html',
my_data_dictionary,
context_instance=RequestContext(request))
Это гарантирует, что все запросы, возвращаемые процессорами контекста шаблона в TEMPLATE_CONTEXT_PROCESSORS
, будут переданы в шаблон.
Вы также можете использовать render
ярлык , который будетавтоматически отображать шаблон с экземпляром Requestcontext
.
Еще одна опция, добавленная в Django 1.3, - это TemplateResponse
, которая также будет использовать экземпляр RequestContext
.