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.
Tantangan
Sedang/events/<pk>/guests/, nama URLguests, menampilkan daftar tamu acara beserta email mereka diguest_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