Una lista desde la base de datos
Parte de la sección Modelos y el panel de administración del Journey de Django de Coddy. Lección 13 de 23.
La página de inicio todavía muestra tres títulos escritos directamente en la vista. La vista es donde la página obtiene sus datos: le pide filas al ORM y pasa el QuerySet a la plantilla, como antes pasaste una lista. Una página con los libros que todavía no has leído sería así:
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})El punto en from .models significa la carpeta propia de esta aplicación. En la plantilla, cada elemento del bucle es un Book, así que {{ book.title }} y {{ book.price }} leen sus campos, y {{ book }} por sí solo muestra su __str__.
Desafío
FácilHaz que la página de inicio muestre los libros reales.
- En
books/views.py, pasa a la plantilla todos los libros de la base de datos comobooks, en lugar de la lista escrita manualmente. - En
home.html, muestra cada libro con su título y año entre paréntesis, comoDune (1965).
En la pestaña Shell, escribe Book.objects.create(title="Beloved", author="Toni Morrison", year=1987, price="13.00") y vuelve a cargar /: Beloved (1987) encabezará la lista.
Pruébalo tú mismo
from django.shortcuts import render
def home(request):
books = ["Dune", "Emma", "The Hobbit"]
return render(request, "books/home.html", {"books": books})
Todas las lecciones de Modelos y el panel de administración
3Páginas desde la base de datos
Una lista desde la base de datosUna página para cada libroPractica por tu cuenta: Playground de Django