Table des matières

La classe Shortcuts

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.

render, raccourci de chargement de template

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

get_object_or_404, un objet sinon rien

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).

get_list_or_404

Idem get_objet_or_404, mais utilise filter au lieu de get et renvoie donc…une liste.