Une liste issue de la base de données
Fait partie de la section Modèles et interface d’administration du Journey Django de Coddy. Leçon 13 sur 23.
La page d’accueil affiche toujours trois titres saisis directement dans la vue. La vue est l’endroit où la page récupère ses données : elle demande des lignes à l’ORM et transmet le QuerySet au modèle, comme tu as transmis une liste auparavant. Une page des livres que tu n’as pas encore lus pourrait être :
from django.shortcuts import render
from .models import Book
def to_read(request):
books = Book.objects.filter(is_read=False)
return render(request, "books/to_read.html", {"books": books})Le point dans from .models désigne le propre dossier de cette application. Dans le modèle, chaque élément de la boucle est un Book, donc {{ book.title }} et {{ book.price }} lisent ses champs, et {{ book }} seul affiche son __str__.
Défi
FacileFais en sorte que la page d’accueil affiche les vrais livres.
- Dans
books/views.py, transmets au modèle tous les livres de la base de données sous le nombooks, à la place de la liste saisie manuellement. - Dans
home.html, affiche chaque livre avec son titre et son année entre parenthèses, commeDune (1965).
Dans l’onglet Shell, saisis Book.objects.create(title="Beloved", author="Toni Morrison", year=1987, price="13.00") et recharge / : Beloved (1987) apparaît en tête de liste.
Essayez vous-même
from django.shortcuts import render
def home(request):
books = ["Dune", "Emma", "The Hobbit"]
return render(request, "books/home.html", {"books": books})
Toutes les leçons de Modèles et interface d’administration
3Des pages issues de la base de données
Une liste issue de la base de donnéesUne page pour chaque livreEntraînez-vous par vous-même : Playground Django