Menu
CoddyTech

Halaman Tamu

Termasuk bagian Formulir dalam perjalanan Django di Coddy. Pelajaran 19 dari 20.

Penyelenggara menginginkan halaman untuk setiap acara yang hanya menampilkan tamu acaranya, sebagai tempat untuk mengelola mereka. Kamu sudah mengetahui setiap bagiannya: URL dengan pk acara, view yang menemukan acara tersebut, dan perulangan template untuk event.rsvps.all.

Template guest_list.html sudah disiapkan untukmu, tetapi daftarnya masih kosong. Daftar tamu hanya terkait dengan satu acara, jadi ambil tamunya melalui acara tersebut, jangan dari semua RSVP.

challenge icon

Tantangan

Sedang
  • /events/<pk>/guests/, nama URL guests, menampilkan daftar tamu acara beserta email mereka di guest_list.html.
  • Setiap halaman acara memiliki tautan ke halaman ini dengan teks Manage guests.

Tekan Jalankan, buka Friday Jazz Night, lalu tekan Manage guests.

Coba sendiri

from django.contrib import messages
from django.shortcuts import get_object_or_404, redirect, render

from .forms import EventForm, RSVPForm
from .models import Event


def event_list(request):
    q = request.GET.get("q", "")
    events = Event.objects.all()
    if q:
        events = events.filter(title__icontains=q)
    return render(request, "events/event_list.html", {"events": events, "q": q})


def event_detail(request, pk):
    event = get_object_or_404(Event, pk=pk)
    if request.method == "POST":
        form = RSVPForm(request.POST, event=event)
        if form.is_valid():
            rsvp = form.save(commit=False)
            rsvp.event = event
            rsvp.save()
            messages.success(request, "You're on the list!")
            return redirect("events:detail", pk=event.pk)
    else:
        form = RSVPForm(event=event)
    return render(request, "events/event_detail.html", {"event": event, "form": form})


def new_event(request):
    if request.method == "POST":
        form = EventForm(request.POST)
        if form.is_valid():
            event = form.save()
            messages.success(request, "Your event was added.")
            return redirect("events:detail", pk=event.pk)
    else:
        form = EventForm()
    return render(request, "events/new_event.html", {"form": form})


def edit_event(request, pk):
    event = get_object_or_404(Event, pk=pk)
    if request.method == "POST":
        form = EventForm(request.POST, instance=event)
        if form.is_valid():
            form.save()
            messages.success(request, "Your changes were saved.")
            return redirect("events:detail", pk=event.pk)
    else:
        form = EventForm(instance=event)
    return render(request, "events/edit_event.html", {"form": form, "event": event})


def delete_event(request, pk):
    event = get_object_or_404(Event, pk=pk)
    if request.method == "POST":
        event.delete()
        messages.success(request, "The event was deleted.")
        return redirect("events:list")
    return render(request, "events/delete_event.html", {"event": event})

Semua pelajaran di Formulir

Latihan sendiri: Playground Django