Menu
CoddyTech

Trang riêng cho mỗi loại đồ uống

Thuộc phần Kiến thức cơ bản về Django trong hành trình Django của Coddy. Bài học 7 trên 23.

Đồ uống của quán cà phê giờ nằm trong DRINKS, một từ điển trong menu/views.py. Các khóa như flat-white là slug: những từ viết thường, nối với nhau bằng dấu gạch nối, được tạo ra để dùng trong URL.

Bộ chuyển đổi slug khớp với chữ cái, chữ số, dấu gạch nối và dấu gạch dưới. Ở đây, nó tạo một trang cho mỗi nhân viên, tra cứu thông tin trong một từ điển:

path("team/<slug:handle>/", views.team_member),


def team_member(request, handle):
    person = STAFF[handle]
    return HttpResponse(f"<h2>{person['role']}</h2>")

Với /team/maya-cohen/, hàm xử lý lấy handle="maya-cohen" và dùng giá trị này làm khóa. Một tuyến đường và một hàm xử lý phục vụ toàn bộ từ điển: thêm một mục mới là có ngay trang tương ứng mà không cần viết thêm code.

challenge icon

Thử thách

Dễ

Tạo một trang riêng cho mỗi thức uống trong DRINKS.

  1. Trong menu/urls.py, thêm một đường dẫn khớp với /drinks/latte/, /drinks/flat-white/ và mọi khóa khác. Trỏ đường dẫn đó đến views.drink.
  2. Trong menu/views.py, viết một hàm xem drink để tra khóa trong DRINKS. Hàm này trả về tên trong thẻ <h1>, sau đó là phần mô tả trong thẻ <p>.

Mở /drinks/flat-white/: bạn sẽ thấy Flat White.

Tự làm thử

from django.http import HttpResponse

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):
    return HttpResponse("<h1>Welcome to Corner Café</h1><p>Fresh coffee and cake every day.</p>")


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>")
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức cơ bản về Django

Tự luyện tập: Playground Django