Блог

Python/Django: еще один способ вернуть вид страницы

Многие знают про то как использовать функцию render_to_response и многим она не нравится ведь всегда приходится передавать RequestContext. То есть выглядит все это следующим образом:

from django.shortcuts import render_to_response
from django.template import RequestContext
def view(request):
    return render_to_response('view.html',
        {'list': Model.objects.all()},
        context_instance=RequestContext(request),
    )


Но есть и другие варианты как забыть про “context_instance=RequestContext(request)”. Один из которых сделать свою собственную версии render_to_response, которая будет также принимать одним из параметров request. Или более красивый использовать декораторы, это очень удобно, коротко и практично.

Но варианты на этом не заканчиваются. Django есть функция, которая фактически делает то же самое, что и render_to_response. Вместо того чтобы передавать ей “context_instance=RequestContext(request)” мы можем передать только request.

А теперь собственно и сам пример:

from django.views.generic.simple import direct_to_template
def view(request):
     return direct_to_template(request,
         'view.html',
         {'list': Model.objects.all()}
     )

Попробуйте.
Спасибо за внимание.