Sorgu Dizeleri
Coddy'nin Django Journey'sinin Django Temelleri bölümünün bir parçası. Ders 8 / 23.
Sipariş sayfasında her zaman orta boy yazar. Müşterinin seçtiği boyut, soru işaretinden sonra adreste yer alabilir: /order/?size=large.
Bu kısım sorgu dizesidir: name=value çiftleri & ile birleştirilir. Rota'nın parçası değildir; bu nedenle path("search/", ...), /search/?q=cake ile de eşleşir. Görünüm, çiftleri bir sözlük gibi çalışan request.GET üzerinden okur:
def search(request):
word = request.GET.get("q", "")
if len(word) > 30:
word = word[:30]
return HttpResponse(f"Results for {word}").get(), adı bulunamadığında kullanılacak varsayılan bir değer alır; request.GET["q"] ise bunun yerine hata verir. Her değer metin olarak gelir ve herkes ? işaretinden sonra istediğini yazabilir; bu yüzden bir değeri kullanmadan önce kontrol et. Yalnızca bazı değerleri kabul etmek için değeri izin verilenler listesiyle karşılaştır ve diğer tüm değerler için varsayılan bir değer kullan.
Görev
Kolay“order” sayfasının boyutu adresten okumasını sağla.
ordergörünümünde, boyut eksik olduğunda hata oluşmaması içinrequest.GETiçindensizedeğerini oku.?size=largeiçinYou ordered a large coffee.yanıtını ver. Boyutu cümleye ekle; böylecesmallvemediumda çalışır.- Diğer tüm boyutlarda veya boyut belirtilmediğinde orta boy sipariş verilir.
/order/?size=huge adresini aç: You ordered a medium coffee. mesajını görürsün.
Kendin dene
from django.http import HttpResponse
DRINKS = {
"espresso": {"name": "Espresso", "price": 2.5, "description": "A short, strong shot of coffee."},
"latte": {"name": "Latte", "price": 3.5, "description": "Espresso with lots of steamed milk."},
"flat-white": {"name": "Flat White", "price": 3.75, "description": "Espresso with a thin layer of silky milk."},
"hot-chocolate": {"name": "Hot Chocolate", "price": 3, "description": "Dark chocolate melted into warm milk."},
}
def home(request):
return HttpResponse("<h1>Welcome to Corner Café</h1><p>Fresh coffee and cake every day.</p>")
def about(request):
return HttpResponse("Corner Café opened in 2026.")
def hours(request):
return HttpResponse("Open every day from 8:00 to 18:00.")
def contact(request):
return HttpResponse("Write to us at hello@cornercafe.example.")
def table(request, number):
return HttpResponse(f"<h1>Table {number}</h1>")
def drink(request, slug):
item = DRINKS[slug]
return HttpResponse(f"<h1>{item['name']}</h1><p>{item['description']}</p>")
def order(request):
size = "medium"
return HttpResponse(f"You ordered a {size} coffee.")
Django Temelleri bölümündeki tüm dersler
2Dinamik URL'ler
Yol DönüştürücüleriHer İçecek İçin Bir SayfaSorgu DizeleriHttp404 Hatası YükseltmeKendi başına pratik yap: Django playground