Templat Pertamamu
Termasuk bagian Dasar-Dasar Django dalam perjalanan Django di Coddy. Pelajaran 11 dari 23.
HTML halaman beranda telah menjadi terlalu panjang untuk sebuah string Python. Django menyimpan HTML dalam template, yaitu file yang dirender oleh view. View keranjang toko:
from django.shortcuts import render
def cart(request):
return render(request, "shop/cart.html")render() membaca template, mengisinya, lalu mengembalikan HttpResponse. Django mencari "shop/cart.html" di folder templates/ setiap app dalam INSTALLED_APPS, di settings.py. Jadi, dua hal harus benar:
- app ada di
INSTALLED_APPS; - file berada di
shop/templates/shop/cart.html. Pengulanganshopmembuatnya terpisah daricart.htmlmilik app lain.
Jika salah satunya terlewat, halaman akan mengalami error TemplateDoesNotExist yang mencantumkan setiap folder yang ditelusuri Django. Tag {% url %} di home.html membuat tautan About; pelajaran berikutnya akan menjelaskannya.
Tantangan
MudahHTML untuk halaman beranda sudah siap di menu/templates/menu/home.html. Buat view home merendernya.
- Di
mysite/settings.py, tambahkan"menu"keINSTALLED_APPS. Django hanya mencari template di aplikasi yang tercantum di sana. - Di
menu/views.py, imporrenderdaridjango.shortcutsdan ganti barisreturnpada viewhomeagar merender"menu/home.html".
Tekan Run: bilah judul situs menampilkan Corner Café.
Coba sendiri
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.")
Semua pelajaran di Dasar-Dasar Django
4Tata Letak dan File Statis
Pewarisan TemplateJudul untuk Setiap Halaman3Templat
Templat PertamamuVariabel TemplatLatihan sendiri: Playground Django