Memeriksa input
Termasuk bagian Formulir dalam perjalanan Django di Coddy. Pelajaran 4 dari 20.
Kirim formulir dengan judul kosong, lalu papan akan menerima acara tanpa nama. Apa pun bisa masuk ke request.POST, jadi view memeriksanya sebelum menyimpan.
Jika input salah, view tidak menyimpan apa pun dan tidak mengalihkan halaman: view menampilkan kembali halaman formulir dengan pesan. Contoh formulir pemesanan meja yang menerima 1 hingga 8 tamu:
guests = request.POST["guests"]
if not guests.isdigit() or not 1 <= int(guests) <= 8:
problem = "Choose between 1 and 8 guests."
return render(request, "tables/book.html", {"problem": problem})
Booking.objects.create(guests=int(guests))Pemeriksaan dilakukan sebelum create(): setelah baris disimpan, pesan itu sudah terlambat. Untuk teks, .strip() menghapus spasi di kedua ujung, jadi judul yang hanya berisi spasi menjadi kosong. Templat hanya menampilkan pesan jika ada:
{% if problem %}
<p class="warning">{{ problem }}</p>
{% endif %}Tantangan
MudahTolak acara tanpa judul.
- Di
new_eventdalamevents/views.py, jika judul kosong atau hanya berisi spasi, jangan simpan apa pun dan tampilkan kembali halaman formulir dengan pesanPlease give the event a title.Formulir dengan judul tetap menambahkan acara dan mengarahkan ke halaman lain. - Di
new_event.html, tampilkan pesan di atas formulir hanya jika ada.
Kirim judul yang terdiri dari tiga spasi: kamu akan melihat Please give the event a title. dan tidak ada yang disimpan.
Coba sendiri
from django.shortcuts import get_object_or_404, redirect, render
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":
event = Event.objects.create(
title=request.POST["title"],
date=request.POST["date"],
place=request.POST["place"],
)
return redirect("events:detail", pk=event.pk)
return render(request, "events/new_event.html")
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Formulir
Latihan sendiri: Playground Django