Menu
CoddyTech

Bir Arama Formu

Coddy'nin Django Journey'sinin Formlar bölümünün bir parçası. Ders 1 / 20.

Ziyaretçiler henüz etkinlik panosunda arama yapamıyor. Bir form, yazılanları bir URL'ye gönderen alanlar ve bir düğmeden oluşur.

Yalnızca veri okuyan bir formda method="get" kullanılır: tarayıcı her alanı URL'nin sorgu dizesine name=value biçiminde ekler. Bir mağazanın sayfasındaki beden filtresi:

<form method="get">
    <select name="size">
        <option value="S">Small</option>
        <option value="L">Large</option>
    </select>
    <button type="submit">Show</button>
</form>

Large seçildiğinde /products/?size=L açılır. Alanın name değeri anahtardır; bu nedenle görünüm, herhangi bir sorgu dizesi gibi bunu okur: request.GET.get("size", ""); düz sayfa için bir varsayılan değer kullanılır.

Arama yaptıktan sonra sayfa yeniden yüklenir ve kutu tekrar boşalır. İçindeki sözcükleri korumak için bunları şablona geri aktarın ve input'un value değerine yazın.

challenge icon

Görev

Kolay

Ana sayfaya bir arama ekle:

  • event_list.html içindeki listenin üstüne, alanını URL'de gönderen bir form ekle: adı q olan bir giriş alanı ve bir Search düğmesi.
  • event_list içinde yalnızca başlığı q içeren etkinlikleri göster; büyük/küçük harf farkını göz ardı et.
  • Kutu, aranan metni korur.

Run'a bas ve jazz için ara.

Kendin dene

from django.shortcuts import get_object_or_404, render

from .models import Event


def event_list(request):
    events = Event.objects.all()
    return render(request, "events/event_list.html", {"events": events})


def event_detail(request, pk):
    event = get_object_or_404(Event, pk=pk)
    return render(request, "events/event_detail.html", {"event": event})

Formlar bölümündeki tüm dersler

Kendi başına pratik yap: Django playground