Python Kullanarak Flask ile Basit Web Sayfaları Hazırlama ve Sunma #2

Bir önceki yazıda Flask kullanımına giriş yapmıştım, şimdi birkaç özellik daha ekleyerek devam edeceğim.

Son olarak dosyamız şu haldeydi. Ve aşağıdaki 3 satır komutu komut satırına yazarak sunucumuzu başlatmıştık. Ubuntu için set yerine export komutunu kullanmamız gerekiyor.

İlk iş olarak bir template kullanarak formumuzu ve giriş sayfamızı daha moduler hale getirelim hem de Python ve HTML kodlarımız birbirinden ayırmış olalım.

Flask içerisinde template kullanmak için oluşturduğumuz html dosyalarını, ana python dosyamızla(main.py) aynı klasörde bulunan bir template klasörü oluşturarak bunun içine atmamız gerekiyor.
Aşağıdaki kodları giris.html adıyla templates klasörü içerisine kaydediyoruz. Burada normal formumuzun yanında, dinamik bir değerin template’e aktarılışını gösterebilmek için, {{ tarih }} satırını ekledik. Bu, Jinja2 motorunda değişkenlerin gösterilme şeklidir.

Daha sonra bu template dosyamızı kullanabilmek için giris fonksiyonumuzu aşağıdaki şekilde değiştirip render_template modülünü ekliyoruz, kullandığımız render_template fonksiyonuna ilk parametre olarak teplate dosyamızın adını, daha sonra ise template içinde kullandığımız değişkenleri anahtar kelime adıyla veriyoruz. Burada bir söz dizisi(string) gönderdik diğer Python veri tipleri de kullanılabilir.

Dosyalarımızı kayıt ettikten sonra tarayıcıda hata görmememiz gerekli. Aynısını icerik.html olarak merhaba fonksiyonu için de uyguluyoruz.

Giriş yapıldıktan sonra bunu bir cookie olarak tutmayı deneyelim. Bunun için merhaba fonksiyonumuzu aşağıdaki gibi değiştiriyoruz.

Normalde bir fonksiyonun URL ile yapılan isteğe cevap verebilmesi için bir response nesnesi döndürmesi gerekir. Önceki örneklerde söz dizisi ya da render_template nesnesi döndürdüğümüzde Flask bunu response nesnesine dönüştürüyordu. Şimdi cookie eklememiz gerektiği için response nesnesini kendimiz oluşturmalıyız. make_response ile bunu yapıyor sonra set_cookie ile çerezimiz için anahtar değer ikilisini veriyoruz. Her istek geldiğinde eğer bu çerezimiz var ise direk içerik dosyamızı gösteriyoruz.

Bir Cevap Yazın