Cette classe contient des raccourcis de fonctions permettant de réduire de manière significative le volume de code écrit. Utile notamment sur des fonctions particulièrement utilisées.
Soit une classe Monobjet. L'affichage des objets de cette classe via un template peut se faire grâce à Context :
from django.http import HttpResponse from django.template import Context, loader from monApp.models import Monobjet def index(request): mon_objet_list = Monobjet.objects.all() template = loader.get_template('monTemplate.html') context = Context({ 'mon_objet_list': mon_objet_list, }) return HttpResponse(template.render(context))
Grâce à Shortcuts, il est possible de réduire cette quantité de code avec la fonction render. Le résultat est strictement identique :
from django.shortcuts import render from monApp.models import Monobjet def index(request): mon_objet_list = Monobjet.objects.all() context = {'mon_objet_list': mon_objet_list} return render(request, 'monTemplate.html', context)
render possède trois arguments
La méthode complète
def detail(request, poll_id): try: objet = Classe.objects.get(pk=_id) except Classe.DoesNotExist: raise Http404 return render(request, 'template.html', {'objet': objet})
La version courte
def detail(request, poll_id): objet = get_object_or_404(Classe, pk=_id) return render(request, 'template.html', {'objet': objet})
get_object_or_404 prend en paramètre le modèle et les arguments nécessaires à la recherche de l'objet (ici la Primary Key).
Idem get_objet_or_404, mais utilise filter au lieu de get et renvoie donc…une liste.