Menu
CoddyTech

Pesan Sukses

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

Setelah menyimpan, pengunjung membuka halaman acara, tetapi tidak ada tanda bahwa penyimpanan berhasil. View tidak dapat mengirim variabel ke halaman itu: view lain yang menampilkannya pada request berikutnya.

messages framework Django membawa pesan melewati pengalihan. View menambahkannya sebelum mengalihkan, lalu Django menyimpannya untuk pengunjung tersebut dan meneruskannya ke halaman berikutnya yang ditampilkan. Blog yang menyimpan komentar:

from django.contrib import messages

comment.save()
messages.success(request, "Thanks, your comment is posted.")
return redirect("blog:post", pk=post.pk)

Setiap template mendapatkan variabel messages, sehingga template dasar dapat menampilkannya di setiap halaman:

{% for message in messages %}
<p class="note">{{ message }}</p>
{% endfor %}

Melakukan perulangan pada messages menandainya sebagai telah dibaca, sehingga setiap pesan hanya ditampilkan sekali.

challenge icon

Tantangan

Mudah
  • Setelah setiap penyimpanan di events/views.py, tambahkan pesan sukses: Your event was added., Your changes were saved. atau The event was deleted.
  • Di base.html, di atas {% block content %}, tampilkan pesan sebagai item dalam <ul class="messages">, hanya jika ada pesan.

Tekan Jalankan, tambahkan sebuah acara, lalu muat ulang halamannya.

Coba sendiri

from django.shortcuts import get_object_or_404, redirect, render

from .forms import EventForm
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)
    return render(request, "events/event_detail.html", {"event": event})


def new_event(request):
    if request.method == "POST":
        form = EventForm(request.POST)
        if form.is_valid():
            event = form.save()
            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()
            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()
        return redirect("events:list")
    return render(request, "events/delete_event.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