Flask Static/Dinamik Url Yapısı
İlk dersimizde Flask kurulumunu yapmıştık. Artık sayfalarımızı oluşturarak web sitemizin temelini inşaa etmeye başlıyoruz. Bu derste hem static hem de dinamik url yapıları oluşturarak sayfalarımızı yayına alacağız.
Web sitelerinin ana fonksiyonlarından biri kullanıcı ile etkileşime geçebilmektir. Bir ziyaretçi sitenize girdiğinde ihtiyaç duyduğu sayfalarda gezinerek sitenizden istifade eder. Bu sebeple bizde bu derste örnek olarak ilk statik sayfalarımızı oluşturacağız ve dinamik url yapıları ile değişken sayfalar elde edeceğiz. Öyleyse hemen başlayalım.
Hatırlarsanız geçen derste index.py
isimli dosyamızı oluşturarak Flask sunucumuzu başlatmışık. Artık sayfa yapımızı oluşturmak için app = Flask(__name__)
kodunun birkaç satır altından devam ediyoruz.
İlk yapacağımız iş Ana Sayfa
mızı oluşturmak. Çünkü ziyaretçiler domain üzerinden ilk ana sayfanıza ulaşırlar. Bizde bu nedenle ana sayfamızı başlatalım ve gelenleri selamlayalım:
from flask import Flask,render_template
app = Flask(__name__)
@app.route("/")
def anaSayfa():
return "Merhaba Kerteriz Blog ziyaretçileri!"
if __name__ == "__main__":
app.run(debug=True)
Ardından bulunduğunuz klasörde cmd den python index.py
komutuyla Flask sunucusunu başlatın ve tarayıcıdan 127.0.0.1:5000
sayfasını ziyaret ediniz. Karşınızda Merhaba Kerteriz Blog ziyaretçileri! yazısını görüyorsanız tebrik ederim, ilk flask web sayfanızı oluşturdunuz!
Şimdi ise hemen birkaç basit sayfa daha oluşturalım:
from flask import Flask,render_template
app = Flask(__name__)
@app.route("/")
def anaSayfa():
return "Merhaba Kerteriz Blog ziyaretçileri!"
@app.route("/iletisim")
def iletisim():
return "Burası bizim iletişim sayfamız"
@app.route("/hakkimizda")
def hakkimizda():
return "Burada da kendimizi tanıtacağız"
if __name__ == "__main__":
app.run(debug=True)
Ardından tarayıcıdan sırayla 127.0.0.1:5000/iletisim
ve 127.0.0.1:5000/hakkimizda
sayfalarını ziyaret ederek yazdıklarınızı görüntüleyin. Evet, işte bu kadar basit. Mantığını gördüğünüz üzere bu şekilde istediğiniz kadar sayfa oluşturabilirsiniz.
!!NOT!! route içindeki fonksiyon isimlerini istediğiniz şekilde verebilirsiniz. Ben kolay olsun diye sayfa ismiyle aynı ismi kullandım, siz elma, armut vs. kullanabilirsiniz.
Şimdi ise dinamik verileri alarak nasıl işleyeceğinizi göstererek devam edelim. Önce şunu düşünmekle başlayalım. Elinizde bir kütüphane var ve kitaplarınıza sayfa oluşturmak istiyorsunuz. Bu işlemi yukarıda gördüğünüz gibi /kitap1
, kitap2
, kitap3
… diye yüzlerce sayfa oluşturarak mı yapmak isteriniz yoksa tek bir sayfa üzerinden kitap/x
gibi bir yapı oluşturarak x
yerine gelen değerdeki kitapı göstererek mi yapmak istersiniz? Cevap belli olduğu için hemen nasıl dinamik url yapıları oluşturabileceğinizi gösterelim.
from flask import Flask,render_template
app = Flask(__name__)
@app.route('/yazar/<string:id>')
def yazar(id):
return "Kitap ID si:" + id
if __name__ == "__main__":
app.run(debug=True)
Örnekte gördüğünüz gibi yazar/
dan sonra gelen karakterleri id
isimli değişkene attık ve ekrana Kitap ID si: x
şeklinde bastırdık. Bu örnekte x yerine kitap id sini karakter olarak yazılmasını istediğimiz için (ör: A123B) değişkenimizi string
tanımladık ama siz aşağıdaki yapılarıda kullanarak farklı örnekler üzerinden çalışabilirsiniz.
Veri Tipi | Açıklama |
---|---|
string | karakter girebilirsiniz (Ör: elma, armut1, a, Kerteriz) |
int | tam sayılar girebilirsiniz (Ör: -5, 10 , 0 , 1500, 987) |
float | Ondalıklı sayılar girebilirsiniz (Ör: 0.5, 13.99, -2.5) |
path | / işaretinin olduğu karakterler girebilirsiniz (Ör: elma/) |
!!NOT!! karakter tipini belirtmeden de @app.route('/yazar/<id>')
şeklinde kullanabilirsiniz. Bu durumda karakter tipi, default tip olan string
olarak belirlenir. Rahat ve hızlı bir kullanım için bu tarzı benimseyebilirsiniz.
Artık sayfalarımızı ve url yapılarımızı oluşturduğumuza göre şu soruyu sormanızı bekliyorum: Ee biz bu sayfaları nasıl özelleştirip HTML temalarımızı kullanacağız? İşte bu sorununun cevabını bir sonraki derste işleyeceğiz. Siz şimdi url yapısını anladığınızdan emin olun ve aklınıza takılan soru olursa aşağıya yorum bırakmaktan çekinmeyin.