Votre premier modèle
Fait partie de la section Les bases de Django du Journey Django de Coddy. Leçon 11 sur 23.
Le code HTML de la page d’accueil est devenu trop long pour une chaîne Python. Django conserve le code HTML dans un template, un fichier que la vue génère. Vue du panier d’une boutique :
from django.shortcuts import render
def cart(request):
return render(request, "shop/cart.html")render() lit le template, le complète et renvoie un HttpResponse. Django recherche "shop/cart.html" dans le dossier templates/ de chaque application de INSTALLED_APPS, dans settings.py. Deux éléments doivent donc être corrects :
- l’application figure dans
INSTALLED_APPS; - le fichier se trouve à l’emplacement
shop/templates/shop/cart.html. La répétition deshoppermet de le distinguer du fichiercart.htmld’une autre application.
Si l’un des deux éléments manque, la page plante avec TemplateDoesNotExist, qui liste tous les dossiers dans lesquels Django a effectué une recherche. La balise {% url %} dans home.html crée le lien « À propos » ; une leçon ultérieure l’expliquera.
Défi
FacileLe code HTML de la page d’accueil est prêt dans menu/templates/menu/home.html. Fais en sorte que la vue home l’affiche.
- Dans
mysite/settings.py, ajoute"menu"àINSTALLED_APPS. Django recherche les modèles uniquement dans les applications qui y sont répertoriées. - Dans
menu/views.py, importerenderdepuisdjango.shortcutset remplace la lignereturnde la vuehomeafin qu’elle affiche"menu/home.html".
Appuie sur Exécuter : la barre de titre du site affiche Corner Café.
Essayez vous-même
from django.http import Http404, HttpResponse
from django.urls import reverse
DRINKS = {
"espresso": {"name": "Espresso", "price": 2.5, "description": "A short, strong shot of coffee."},
"latte": {"name": "Latte", "price": 3.5, "description": "Espresso with lots of steamed milk."},
"flat-white": {"name": "Flat White", "price": 3.75, "description": "Espresso with a thin layer of silky milk."},
"hot-chocolate": {"name": "Hot Chocolate", "price": 3, "description": "Dark chocolate melted into warm milk."},
}
def home(request):
about_url = reverse("menu:about")
return HttpResponse(
"<h1>Welcome to Corner Café</h1><p>Fresh coffee and cake every day.</p>"
f'<a href="{about_url}">About us</a>'
)
def about(request):
return HttpResponse("Corner Café opened in 2026.")
def hours(request):
return HttpResponse("Open every day from 8:00 to 18:00.")
def contact(request):
return HttpResponse("Write to us at hello@cornercafe.example.")
def table(request, number):
return HttpResponse(f"<h1>Table {number}</h1>")
def drink(request, slug):
if slug not in DRINKS:
raise Http404(f"No drink called {slug}")
item = DRINKS[slug]
return HttpResponse(f"<h1>{item['name']}</h1><p>{item['description']}</p>")
def order(request):
size = request.GET.get("size", "medium")
if size not in ["small", "medium", "large"]:
size = "medium"
return HttpResponse(f"You ordered a {size} coffee.")
Toutes les leçons de Les bases de Django
1Votre premier site Django
Bonjour, DjangoUne deuxième page4Mises en page et fichiers statiques
Héritage des templatesUn titre pour chaque page3Modèles
Votre premier modèleVariables de modèleEntraînez-vous par vous-même : Playground Django