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.
Tantangan
Mudah- Setelah setiap penyimpanan di
events/views.py, tambahkan pesan sukses:Your event was added.,Your changes were saved.atauThe 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})
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Formulir
Latihan sendiri: Playground Django