Memeriksa input
Termasuk bagian Formulir dalam perjalanan Django di Coddy. Pelajaran 4 dari 20.
Kirim formulir dengan judul kosong, lalu board akan menerima event tanpa nama. Apa pun bisa tiba di request.POST, jadi sebuah view memeriksanya sebelum menyimpan.
Jika input salah, view tidak menyimpan apa pun dan tidak mengalihkan halaman: view merender halaman formulir lagi dengan pesan. Berikut formulir pemesanan meja untuk 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 sudah terlambat. Untuk teks, .strip() menghapus spasi di kedua ujung, jadi judul yang hanya berisi spasi menjadi kosong. Template menampilkan pesan hanya jika ada:
{% if problem %}
<p class="warning">{{ problem }}</p>
{% endif %}Tantangan
MudahTolak acara tanpa judul:
- Jika judul kosong atau hanya berisi spasi,
new_eventmenampilkan kembali halaman formulir denganPlease give the event a title.di atas formulir, dan tidak menyimpan apa pun. - Formulir dengan judul tetap menambahkan acara dan mengarahkan ke halaman acara tersebut.
Tekan Jalankan dan kirim formulir dengan judul yang terdiri dari tiga spasi.
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