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.
Tantangan
MudahBeri tahu pengunjung bahwa setiap penyimpanan berhasil.
- Di
events/views.py, tambahkan pesan sukses setelah setiap penyimpanan, sebelum pengalihan: dinew_eventYour event was added., diedit_eventYour changes were saved., didelete_eventThe event was deleted. - 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})
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Formulir
Latihan sendiri: Playground Django