Menu
CoddyTech

영업시간

Coddy Django 여정의 Django 기초 섹션에 포함된 레슨. 23개 중 22번째.

카페의 영업시간이 변경되었습니다. 금요일과 토요일은 더 늦게까지 영업하고, 일요일은 휴무입니다. 영업시간은 menu/views.py의 HOURS에 있으며, 날짜별로 하나씩 딕셔너리가 있습니다. 일요일의 opens는 None입니다. /hours/ 페이지는 여전히 한 줄의 텍스트를 반환합니다.

영업 일정은 HTML 표에 잘 맞습니다. 각 행에는 <tr>을, 각 셀에는 <td>를 사용합니다.

<table>
    <tr><td>Espresso</td><td>$2.50</td></tr>
    <tr><td>Latte</td><td>$3.50</td></tr>
</table>
None은 {% if %}에서 거짓으로 간주되므로, 영업하지 않는 날에는 {% else %} 부분에서 휴무라고 표시할 수 있습니다.
challenge icon

챌린지

중급

/hours/에서 HOURS를 컨텍스트에 포함하여 menu/hours.html(미리 준비되어 있음)을 렌더링하도록 만드세요. 표에는 요일마다 <tr> 하나씩 넣으세요. 첫 번째 <td>에는 요일을 표시하고, 그다음에는 8:00 to 18:00을 표시하세요. 해당 요일에 영업하지 않으면 Closed를 표시하세요.

Run을 누르세요. 미리보기가 /hours/를 엽니다.

직접 해보기

from django.http import Http404, HttpResponse
from django.shortcuts import render

DRINKS = {
    "espresso": {
        "slug": "espresso",
        "name": "Espresso",
        "price": 2.5,
        "description": "A short, strong shot of coffee.",
        "sold_out": False,
    },
    "latte": {
        "slug": "latte",
        "name": "Latte",
        "price": 3.5,
        "description": "Espresso with lots of steamed milk.",
        "sold_out": False,
    },
    "flat-white": {
        "slug": "flat-white",
        "name": "Flat White",
        "price": 3.75,
        "description": "Espresso with a thin layer of silky milk.",
        "sold_out": False,
    },
    "hot-chocolate": {
        "slug": "hot-chocolate",
        "name": "Hot Chocolate",
        "price": 3,
        "description": "Dark chocolate melted into warm milk.",
        "sold_out": True,
    },
}


MENU = {
    "Coffee": [
        {"name": "Espresso", "price": 2.5},
        {"name": "Latte", "price": 3.5},
        {"name": "Flat White", "price": 3.75},
    ],
    "Tea": [
        {"name": "Green Tea", "price": 2.5},
        {"name": "Chai", "price": 3.25},
    ],
    "Cakes": [
        {"name": "Carrot Cake", "price": 4},
        {"name": "Lemon Tart", "price": 3.5},
    ],
}


HOURS = [
    {"day": "Monday", "opens": "8:00", "closes": "18:00"},
    {"day": "Tuesday", "opens": "8:00", "closes": "18:00"},
    {"day": "Wednesday", "opens": "8:00", "closes": "18:00"},
    {"day": "Thursday", "opens": "8:00", "closes": "18:00"},
    {"day": "Friday", "opens": "8:00", "closes": "20:00"},
    {"day": "Saturday", "opens": "9:00", "closes": "20:00"},
    {"day": "Sunday", "opens": None, "closes": None},
]


def home(request):
    return render(request, "menu/home.html", {"special": DRINKS["flat-white"]})


def drink_list(request):
    return render(request, "menu/drinks.html", {"drinks": DRINKS.values()})


def full_menu(request):
    return render(request, "menu/menu.html", {"menu": MENU})


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.")

Django 기초의 모든 레슨

직접 연습해 보세요: Django 플레이그라운드