O pacote django.shortcuts agrega funções auxiliares e classes que “surgem” em múltiplos níveis do MVC. Em outras palavras, essas funções/classes introduzem uma união controlada em prol da conveniência.
django.shortcuts.render_to_response renderiza um dado template com um determinado dicionário de contexto e retorna um objeto HttpResponse com o texto renderizado.
Instância de contexto a ser renderizada com o template. Por padrão, o o template vai renderizar com uma instância do Context (preenchida com valores de dicionário). Se você precisa usar o context processors, renderize o template com uma instância de RequestContext. Seu código pode ficar parecido com o seguinte:
return render_to_response('my_template.html',
my_data_dictionary,
context_instance=RequestContext(request))
mimetype
Novo no Django 1.0: Please, see the release notesO tipo MIME a ser usado para o documento resultante. Caso nenhum valor seja fornecido, será utilizado o valor de DEFAULT_CONTENT_TYPE do arquivo de settings.py.
O exemplo a seguir renderiza o template myapp/index.html com o tipo MIME application/xhtml+xml:
from django.shortcuts import render_to_response
def my_view(request):
# Código da View aqui...
return render_to_response('myapp/index.html', {"foo": "bar"},
mimetype="application/xhtml+xml")
Esse exemplo é equivalente a:
from django.http import HttpResponse
from django.template import Context, loader
def my_view(request):
# Código da View aqui...
t = loader.get_template('myapp/template.html')
c = Context({'foo': 'bar'})
return HttpResponse(t.render(c),
mimetype="application/xhtml+xml")
django.shortcuts.get_object_or_404 chama get() de um dado gerenciador de modelos, mas lança um django.http.Http404 no lugar da exceção DoesNotExist.
O seguinte exemplo pega o objeto com a chave primária 1 de MyModel:
from django.shortcuts import get_object_or_404
def my_view(request):
my_object = get_object_or_404(MyModel, pk=1)
Esse exemplo é equivalente a:
from django.http import Http404
def my_view(request):
try:
my_object = MyModel.objects.get(pk=1)
except MyModel.DoesNotExist:
raise Http404
Nota: Como com get(), uma exceção MultipleObjectsReturned será lançada caso mais de um objeto seja encontrado.
django.shortcuts.get_list_or_404 devolve o resultado de filter() em um dado gerenciador de modelo, lançando um django.http.Http404 se o resultado da lista for vazio.
O seguinte exemplo pega todos os objetos publicados de MyModel:
from django.shortcuts import get_list_or_404
def my_view(request):
my_objects = get_list_or_404(MyModel, published=True)
Esse exemplo é equivalente a:
from django.http import Http404
def my_view(request):
my_objects = list(MyModel.objects.filter(published=True))
if not my_objects:
raise Http404
Dec 26, 2011