Hapus Tamu
Termasuk bagian Formulir dalam perjalanan Django di Coddy. Pelajaran 20 dari 20.
Pengelola perlu menghapus orang dari halaman tamu. Setiap baris memiliki form kecilnya sendiri dengan action berupa URL untuk satu baris itu, sehingga tombol hanya mengirim data untuk barisnya. Daftar tugas dengan tombol Selesai untuk setiap tugas:
{% for task in tasks %}
<li>
{{ task.title }}
<form method="post" action="{% url 'todo:finish' task.pk %}">
{% csrf_token %}
<button type="submit">Done</button>
</form>
</li>
{% endfor %}View seperti finish tidak memiliki halaman: view itu hanya melakukan tindakan. @require_POST dari django.views.decorators.http merespons method lainnya dengan 405 sebelum view dijalankan, sehingga tautan atau alamat yang diketik tidak akan menghapus siapa pun:
@require_POST
def finish(request, pk):Setelah melakukan tindakan, tambahkan pesan lalu arahkan ulang, seperti sebelumnya.
Tantangan
Sulit- Di halaman tamu, setiap tamu mendapatkan tombol
Removeyang mengirim POST ke/rsvps/<pk>/remove/(nama URLremove_rsvp). - View tersebut hanya menerima POST. View itu menghapus RSVP, menambahkan
Ada was removed from the guest list.dengan nama tamu, lalu mengarahkan kembali ke halaman tamu acara.
Tekan Jalankan dan hapus seorang tamu.
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})
def guest_list(request, pk):
event = get_object_or_404(Event, pk=pk)
return render(request, "events/guest_list.html", {"event": event})
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Formulir
Latihan sendiri: Playground Django