Funções de atalho do Django¶
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.
render_to_response()¶
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.
Argumentos obrigatórios¶
template- O nome completo do template utilizado ou uma sequência de nomes de template.
Argumentos opcionais¶
dictionary- Um dicionário com os valores a serem adicionados ao contexto do template. Por via de regra, é informado um dicionário vazio. Se o valor no dicionário é chamável, a view irá chamá-lo antes de renderizar o template.
context_instanceInstâ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 dedicionário). Se você precisa usar o context processors, renderize o template com uma instância deRequestContext. Seu código pode ficar parecido com o seguinte:return render_to_response('my_template.html', my_data_dictionary, context_instance=RequestContext(request))
mimetype
O tipo MIME a ser usado para o documento resultante. Caso nenhum valor seja fornecido, será utilizado o valor de
DEFAULT_CONTENT_TYPEdo arquivo de settings.py.
Exemplo¶
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")
get_object_or_404¶
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.
Argumentos obrigatórios¶
klass- Uma instância de
Model,ManagerouQuerySetda qual se pega o objeto. **kwargs- Parâmetros de busca que devem estar em um formato aceito por
get()efilter().
Exemplo¶
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.
get_list_or_404¶
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.
Argumentos obrigatórios¶
klass- Uma instância de
Model,ManagerouQuerySetda qual se pega o objeto. **kwargs- Parâmetros de busca que devem estar em um formato aceito por
get()efilter().
Exemplo¶
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