Menu
CoddyTech

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.

challenge icon

Tantangan

Sulit
  • Di halaman tamu, setiap tamu mendapatkan tombol Remove yang mengirim POST ke /rsvps/<pk>/remove/ (nama URL remove_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})
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Formulir

Latihan sendiri: Playground Django