Menu
CoddyTech

Pesan Sukses

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

Setelah menyimpan, pengunjung akan membuka halaman acara, tetapi tidak ada tanda bahwa penyimpanan berhasil. View tidak dapat meneruskan variabel ke halaman itu: view lain menggambarnya dalam permintaan berikutnya.

messages framework Django membawa catatan melewati pengalihan. View menambahkannya sebelum mengalihkan; Django menyimpannya untuk pengunjung tersebut dan meneruskannya ke halaman berikutnya yang ditampilkan. Berikut contoh 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 mendapat variabel messages, jadi 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

Beri tahu pengunjung bahwa setiap penyimpanan berhasil.

  1. Di events/views.py, tambahkan pesan sukses setelah setiap penyimpanan, sebelum pengalihan: di new_event Your event was added., di edit_event Your changes were saved., di delete_event The event was deleted.
  2. Di base.html, di atas {% block content %}, tampilkan setiap pesan sebagai <li> di dalam <ul class="messages">, dan tampilkan daftar hanya jika ada pesan.

Tambahkan acara: Your event was added. muncul di bagian atas, dan pemuatan ulang akan menghapusnya.

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