Le paquet django.shortcuts rassemble des fonctions et des classes utilitaires qui recouvrent plusieurs niveaux de l’architecture MVC. En d’autres termes, ces fonctions/classes introduisent un couplage contrôlé à des fins de commodité.
Combine un gabarit donné avec un dictionnaire contexte donné et renvoie un objet HttpResponse avec le texte résultant.
render() est semblable à l’appel à render_to_response() avec un paramètre context_instance qui force l’utilisation d’une classe RequestContext.
L’objet requête utilisé pour générer la réponse.
Le nom complet d’un gabarit à utiliser ou une liste de noms de gabarits.
Un dictionnaire de valeurs à ajouter un contexte du gabarit. Par défaut, ce dictionnaire est vide. Si une des valeurs du dictionnaire est exécutable, la vue l’appellera immédiatement avant de faire le rendu du gabarit.
L’instance de contexte avec laquelle effectuer le rendu du gabarit. Par défaut, le gabarit sera rendu avec une instance RequestContext (complétée par des valeurs de request et dictionary).
Le type MIME à utiliser pour le document produit. La valeur par défaut est celle du réglage DEFAULT_CONTENT_TYPE.
Le code d’état de la réponse. La valeur par défaut est 200.
Une indication de l’application contenant la vue actuelle. Consultez la stratégie de résolution des URL en espaces de noms pour plus d’informations.
L’exemple suivant effectue le rendu du gabarit myapp/index.html avec le type MIME application/xhtml+xml:
from django.shortcuts import render
def my_view(request):
# View code here...
return render(request, 'myapp/index.html', {"foo": "bar"},
content_type="application/xhtml+xml")
Cet exemple est équivalent à :
from django.http import HttpResponse
from django.template import RequestContext, loader
def my_view(request):
# View code here...
t = loader.get_template('myapp/index.html')
c = RequestContext(request, {'foo': 'bar'})
return HttpResponse(t.render(c),
content_type="application/xhtml+xml")
Effectue le rendu d’un gabarit donné avec le dictionnaire de contexte donné et renvoie un objet HttpResponse avec le texte résultant.
Le nom complet d’un gabarit à utiliser ou une liste de noms de gabarits. Si une liste est donnée, le premier gabarit de la liste qui est trouvé sera utilisé. Consultez la documentation du chargeur de gabarits pour plus d’informations sur la façon dont les gabarits sont recherchés.
Un dictionnaire de valeurs à ajouter un contexte du gabarit. Par défaut, ce dictionnaire est vide. Si une des valeurs du dictionnaire est exécutable, la vue l’appellera immédiatement avant de faire le rendu du gabarit.
L’instance de contexte avec laquelle effectuer le rendu du gabarit. Par défaut, le gabarit sera rendu avec une instance Context (complétée par des valeurs de dictionary). Si vous avez besoin d’utiliser des processeurs de contexte, produisez plutôt le gabarit avec une instance RequestContext. Votre code pourrait ressembler à ceci :
return render_to_response('my_template.html',
my_data_dictionary,
context_instance=RequestContext(request))
Le type MIME à utiliser pour le document produit. La valeur par défaut est celle du réglage DEFAULT_CONTENT_TYPE.
L’exemple suivant effectue le rendu du gabarit myapp/index.html avec le type MIME application/xhtml+xml:
from django.shortcuts import render_to_response
def my_view(request):
# View code here...
return render_to_response('myapp/index.html', {"foo": "bar"},
content_type="application/xhtml+xml")
Cet exemple est équivalent à :
from django.http import HttpResponse
from django.template import Context, loader
def my_view(request):
# View code here...
t = loader.get_template('myapp/index.html')
c = Context({'foo': 'bar'})
return HttpResponse(t.render(c),
content_type="application/xhtml+xml")
Renvoie une réponse HttpResponseRedirect à l’URL correspondant aux paramètres transmis.
Les paramètres peuvent être :
Un nom de vue, et potentiellement des paramètres : urlresolvers.reverse sera utilisée pour résoudre le nom.
Une URL qui sera utilisée telle quelle comme emplacement de redirection.
Produit par défaut une redirection temporaire ; indiquez permanent=True pour produire une redirection permanente.
La fonction redirect() peut être utilisée de différentes manières.
En lui passant un objet ; la méthode get_absolute_url() de l’objet est appelée pour produire l’URL de redirection :
from django.shortcuts import redirect
def my_view(request):
...
object = MyModel.objects.get(...)
return redirect(object)
En lui passant le nom d’une vue et, en option, des paramètres positionnels ou nommés ; l’URL sera résolue en utilisant la méthode reverse():
def my_view(request):
...
return redirect('some-view-name', foo='bar')
En lui passant une URL de redirection fixe :
def my_view(request):
...
return redirect('/some/url/')
Cela fonctionne aussi avec des URL complètes :
def my_view(request):
...
return redirect('http://example.com/')
Par défaut, redirect() renvoie une redirection temporaire. Toutes les formes ci-dessus acceptent un paramètre permanent qui, s’il est défini à True, produit une redirection permanente :
def my_view(request):
...
object = MyModel.objects.get(...)
return redirect(object, permanent=True)
Appelle get() d’un gestionnaire de modèle donné, mais lève une exception Http404 au lieu de l’exception DoesNotExist du modèle.
L’exemple suivant obtient l’objet``MyModel`` ayant la clé primaire 1 :
from django.shortcuts import get_object_or_404
def my_view(request):
my_object = get_object_or_404(MyModel, pk=1)
Cet exemple est équivalent à :
from django.http import Http404
def my_view(request):
try:
my_object = MyModel.objects.get(pk=1)
except MyModel.DoesNotExist:
raise Http404
Note : comme pour get(), une exception MultipleObjectsReturned sera levée si plus d’un objet est renvoyé.
Returns the result of filter() on a given model manager cast to a list, raising Http404 if the resulting list is empty.
L’exemple suivant récupère tous les objets publiés de
from django.shortcuts import get_list_or_404
def my_view(request):
my_objects = get_list_or_404(MyModel, published=True)
Cet exemple est équivalent à :
from django.http import Http404
def my_view(request):
my_objects = list(MyModel.objects.filter(published=True))
if not my_objects:
raise Http404
Jan 13, 2016