Il tuo primo template
Fa parte della sezione Fondamenti di Django del percorso Django di Coddy. Lezione 11 di 23.
Il codice HTML della pagina iniziale è diventato troppo lungo per una stringa Python. Django conserva il codice HTML in un template, un file elaborato dalla vista. Ecco la vista del carrello di un negozio:
from django.shortcuts import render
def cart(request):
return render(request, "shop/cart.html")render() legge il template, lo compila e restituisce un HttpResponse. Django cerca "shop/cart.html" nella cartella templates/ di ogni app presente in INSTALLED_APPS, in settings.py. Quindi due cose devono essere corrette:- l'app deve essere in
INSTALLED_APPS; - il file deve trovarsi in
shop/templates/shop/cart.html. La ripetizione dishoplo distingue dal filecart.htmldi un'altra app.
Se ne manca una, la pagina va in errore con TemplateDoesNotExist, che elenca tutte le cartelle in cui Django ha cercato. Il tag {% url %} in home.html crea il link alla pagina Informazioni; una lezione successiva lo spiegherà.
Sfida
FacileL'HTML della pagina iniziale è pronto in menu/templates/menu/home.html. Fai in modo che la vista home lo renderizzi e assicurati che Django riesca a trovarlo.
Premi Run: la barra del titolo del sito mostra Corner Café. Se compare la pagina gialla TemplateDoesNotExist, leggi le cartelle in cui ha cercato.
Provalo tu
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.")
Tutte le lezioni di Fondamenti di Django
4Layout e file statici
Ereditarietà dei templateUn titolo per ogni pagina3Template
Il tuo primo templateVariabili nei templateEsercitati da solo: Playground Django