Python Flask Nedir ve Python Flask ile Web Geliştirme ∞

Python Flask Nedir ve Python Flask ile Web Geliştirme

pyhton flask

Python ile uygulama geliştirme dendiğinde akla genellikle konsol uygulamaları, veri uygulamaları ve yapay zeka gelir, ancak Python dilinin yoğun olarak kullanıldığı alanlardan birisi de Web geliştirme olarak karşımıza çıkmaktadır. Web dünyasında bir JavaScript ya da PHP olmasa da Python programlama dili, gelişmiş İnternet siteleri geliştirmek için yaygın olarak kullanılan iki framework’e ev sahipliği yapmaktadır. Bunlardan iyi bilineni Django, diğeri ise Flask frameworküdür.

Flask frameworkü ile, JavaScript’teki Express.js kütüphanesi tarzında backend sistemleri oluşturup kendinize çeşitli büyüklükte Web uygulamaları oluşturmanız mümkün. Üstelik arka planınızda tuttuğunuz değişkenleri sayfanızda kullanarak sayfayı daha dinamik bir hale getirebiliyorsunuz. Hadi isterseniz hiç zaman kaybetmeden Python Flask nedir ve nasıl Web geliştirme yapılır sorusunu cevaplayalım.

Python Flask Nedir?

Python Flask teknolojisi, günümüzde en yaygın programlama dillerinden birisi olan Python için geliştirilmiş bir Web backend kütüphanesidir. 2010 yılında Python dünyasına giriş yapan Flask frameworkünün temeli Werkzeug ve Jinja2 kütüphanelerine dayanmaktadır. Flask, programcının mümkün olan en basit backend sistemini oluşturmasını sağlamak için geliştirilmiştir, ancak son derece dinamik İnternet uygulamaları oluşturabilecek kadar da güçlüdür.

Flask, günümüzde Python ile web geliştirme alanına ilk adımını atan yazılımcıların dostu ve farklı boyuttaki Web projelerinde kolayca kullanılabilecek güçlü bir teknoloji olarak Python dünyasında popülerliğini sürdürmektedir.

Flask Özellikleri

 

Python Flask kütüphanesi, kolay entegre edilebilen bir backend sistemi olmakla kalmayıp son derece güçlü bir iskelet yapısı oluşturmaya sağlayan bir araç olarak karşımıza çıkmaktadır. Bu kütüphaneyle bir yazılımcının yapabileceklerinden bazıları sırayla şunlardır:

  • Web uygulamaları ve API geliştirme
  • Rotalama ve istek yönetimi
  • Değişkenlerle dinamikleştirilebilen “template” sayfalarla ön yüz oluşturma
  • Temel Python söz dizimiyle algoritma işlemleri
  • Çerez yönetimi
  • RESTful API geliştirme
  • Uygulamayı yayına alınabilir şekilde üretme

Bu özelliklere bakıldığında Python Flask kütüphanesinin bir Web geliştiricinin ihtiyaç duyacağı tüm özellikleri Python dilinin getirdiği kolaylıkla birlikte sunduğu aşikardır.

Flask Yükleme

Bilgisayarınıza Python Flask kütüphanesini yüklemek için bilgisayarınızda Python programlama dilinin halihazırda var olduğunu var sayarsak aşağıdaki komut sizin Flask kütüphanesini bilgisayarınıza yüklemeniz için yeterli olacaktır:

pip install Flask

Bu komut yaklaşık 1 dakikaya kadar sürebilen bir kurulumu başlatır, hemen ardından Flask kütüphanesi tüm özellikleriyle kullanıma hazır hale gelir.

İlk Flask Uygulamamızı Yazalım

Yazımızın bu bölümünde genel hatlarıyla Flask kütüphanesinin kullanımını ele alacağız. Burada yazacağımız bütün kodlar için öncelikle app.py isminde bir Python modülü oluşturuyoruz ve Flask kütüphanesini kodumuza dahil ediyoruz.

from flask import *

“Hello World”

Programlama dünyasının belki de en ünlü kavramlarından olan Hello World cümlesini bu kez Flask aracılığıyla tarayıcı ekranımızda yazdıracağız. Bunun için öncelikle bir Flask uygulaması oluşturuyoruz:

app = Flask(__name__)

Buradaki “__name__” parametresi dikkatinizi çekmiş olabilir. Bu parametre özel bir değişkendir ve kodunu yazdığımız modülün adını tutar. Ana program olarak çalışan bir Python kodunda bu değişken “__main__” değerini alırken, bir yan uygulama/modül olarak çalışan bir Python kodunda bu değişken değer olarak o modülün adını (“app”) alır.

Bu satırın altında ise ilk rotamızı oluşturuyoruz. Bu rota Web dünyasında “index” olarak geçen “/” rotasıdır. Bu rotayı şu şekilde uygulamamıza dahil ediyoruz:

@app.route('/')

def hello_world():

return 'Hello, World!'

Flask kütüphanesinde rota tanımlamak için “@app.route()” fonksiyonunu kullanıyoruz ve bu fonksiyona parametre olarak rotanın adını veriyoruz. Bu satırın hemen altında bu rotaya denk gelecek olan Python fonksiyonunu tanımlıyoruz ve bu örnek için bu fonksiyona “Hello, World!” metinsel değerini döndürüyoruz. Bu kod bloğunun altında şöyle bir ifade yazarak uygulamamızın çalıştırılmasını sağlıyoruz:

app.run()

Kodumuzu kaydedip çalıştırdığımızda karşımıza konsolda şöyle bir görüntü çıkması beklenir:

Eğer bu görüntüyü görüyorsanız kodunuz doğru çalışıyor demektir.

Buradaki “Running on” ifadesiyle başlayan satırın devamındaki adres bize uygulamamızın bilgisayarımızın (localhost) hangi portunda yayına girdiğini verir. Bu uygulamaya erişmek için yapmanız gereken şey bir tarayıcı sekmesi açıp arama çubuğuna “localhost:5000” yazmaktır. Yazdığımız koda göre karşımıza çıkması gereken ekran şu şekildedir:

Eğer buradaki “Hello, World!” yazısı çıkıyorsa uygulamanız yüzde yüz doğru çalışıyor demektir.

Bir HTML Sayfasını Render Etmek

Python Flask elbette ki bize HTML sayfalarını render’layıp uygulamamızın ön yüzünde gösterme olanağı tanır. Uygulamamızda halihazırda bir rotamız olduğuna göre bu rotamız için bir HTML sayfası hazırlayabiliriz. Bunun için işe app.py dosyasının olduğu dizinde “templates” isminde bir klasör ve bu klasörün altında “index.html” isminde bir HTML dosyası oluşturmakla başlayabiliriz. Akabinde index.html dosyamızın içine şu tarz bir kodu atmak işimizi görecektir:

<!DOCTYPE html>

<html>

<head>

<title>Flask Demo</title>

</head>

<body>

<h1>Hello, Flask!</h1>

</body>

</html>

Bu kodu kaydettikten sonra app.py dosyamıza geri gidip hello_world fonksiyonumuzun return ‘Hello, World!’ olan satırını aşağıdaki şekilde değiştiriyoruz:

return render_template('index.html')

Burada ‘Hello, World!’ yerine koyduğumuz “render_template” fonksiyonu, Flask kütüphanesinde “template” adı verilen HTML kaynak kodlarını o rotada render etmeye yarar. Bu kod parametre olarak bu template içinde renderlamak ve işlemek üzere değişken alabilir, ancak ilk parametresi her zaman render edeceği HTML dosyasının adıdır. Bu dosyanın templates alt klasörü içerisinde olması Flask kütüphanesi kullanan bir Web uygulaması oluşturmak için bir gerekliliktir.

Tabii ki app.py veya index.html dosyamızda değişiklik yaptığımız zaman uygulamamızı kapatıp yeniden açmamız gerekir. Bu sorunu ortadan kaldırmak için app.run() olan satırı aşağıdaki kod bloğuyla değiştirmemiz yeterli olacaktır:

if __name__ == ‘__main__’:

app.config[‘TEMPLATES_AUTO_RELOAD’] = True

app.run(debug=True)

Bu değişiklikleri yapıp uygulamamızı yeniden başlattıktan sonra sayfamız şu şekilde görünecek:

Flask ile HTML sayfası renderlamayı öğrendikten sonra günümüzde Web geliştirme alanında çok işe yarayan bir özellik olan bir HTML sayfası içerisinde başka bir HTML sayfası ekleme özelliğine geçelim.

Flask ile Bir Sayfaya Başka Bir Sayfa Koyma

Bir Web sayfasının içerisine başka bir Web sayfası ekleme işlemi PHP gibi dillerde ve günümüzdeki modern Web frameworkleri içerisinde yerleşik olarak bulunan bir özelliktir. Bu özellik genelde bir Web sayfasını kolayca düzenlenip tekrar tekrar kullanılabilen üst bilgi, alt bilgi, ürün listesi gibi parçalara ayırarak geliştiricilere büyük kolaylık sağlar. Flask kütüphanesi bunun için Jinja motorunu kullanarak bu parçalama işlemini kolaylaştırır.

Bunun için, parçaların normal HTML sayfalarından ayırt edilmesi adına, templates klasörünün içerisine bir adet “partials” klasörü oluşturup içine sayfamızın alt bilgisi mahiyetinde olacak bir “footer.html” dosyası ekliyoruz ve bu dosyanın içine aşağıdaki kodu yapıştırıyoruz:

<footer>

<hr/>

<p>Sayfanın Alt Bilgisi</p>

</footer>

Daha sonra index.html dosyamızın içerisine gelip </body> etiketinin hemen üstüne şu kod satırını yazıyoruz:

{% include ‘partials/footer.html’ %}

Bu satır Flask/Jinja motorunun başka bir HTML dosyasını mevcut sayfanın içine gömme kodudur.

Bir HTML sayfasını başka bir HTML sayfasına ekleme işlemi esnasında genelde app.py dosyası üzerinde herhangi bir değişiklik yapmanız gerekmez, ki bu örneğimizde de gerekmedi. Dosyalarımızı kaydedip uygulamamızı yeniden başlattığımızda (sayfanızın güncellenmediği durumda) karşımıza aşağıdaki tablonun çıkması beklenir:

Bu şekilde sayfamıza bir alt bilgi kazandırmış olduk. Aynı şekilde sayfamıza bir üst bilgi, menü sayfası, feed sayfası veya ürün sayfası gibi parçalar da ekleyebiliriz. Tek yapmanız gereken görece daha küçük HTML kodları yazıp index.html sayfanızın içine gömmek. Bu kodlarınızı <div>, <header> ve <footer> gibi etiketlerin arasında yazıp sayfanızın parçalarını oluşturabilirsiniz.

Flask ile Web İstekleri

Python Flask, @app.route yapıları içerisinde belirlediğiniz rotaların hangi HTTP isteklerini alacağını belirlemenize olanak tanır. Bunlardan en sık kullanılanları GET ve POST’tur.

Bunun için yapmanız gereken şey, @app.route(‘/rota_adı’) olan yapınıza şu şekilde bir ekleme yapmak:

@app.route(‘/rota_adı’,methods=[‘GET’,’POST’] #hem GET, hem POST isteklerini almak için

Bu yapının altına yazacağınız fonksiyonda kullanmak üzere bu yapıya erişimde gönderdiğiniz istek “request.method” değişkeni tarafından tutulur. Eğer sayfanızda bir form varsa ve POST isteğiyle bir sonraki sayfaya geçiş yapıyorsanız, geçiş yaptığınız sayfada bir önceki sayfadaki formdan alınan değerlere request.form[‘girdi_adı’] değişkeniyle ulaşabilirsiniz.

Sayfada Değişken Kullanma

Flask frameworkünün temel aldığı Jinja motoru sayesinde web sayfanızda arka plandan gelen değişkenlerinizi yazdırıp kullanabiliyorsunuz. Değişkenleri yazdırma örneğimiz için index rotamız içerisinde val isminde bir değişken tanımlayalım ve buna herhangi bir isim verelim. Bu örneğimizde biz buna 3 değerini veriyoruz.

@app.route('/')

def hello_world():

val = 3

return render_template('index.html',val=val)

İlgili rota fonksiyonumuzda tanımladığımız veya bu fonksiyona tanıttığımız global değişkenlerimizi render_template fonksiyonumuza parametre olarak atayabiliyoruz. Buradaki parametre isminin değişken ismiyle aynı olması yazım ve kontrol kolaylığı için önemlidir, ancak zorunlu değildir. Burada önemli olan, burada parametre olarak tanımladığımız değişkeni (bu örnek için “=” ifadesinin solundaki val değişkeni) sayfanın içerisinde doğru şekilde telaffuz etmektir. Bunu da şu şekilde yapıyoruz:

<p>Val = {{ val }}</p>

Buradaki dört süslü parantez, içerisine yazılan değişkenin sayfada yazdırılmasına olanak tanır. Val değişkenimizin değeri 3 olduğuna göre sayfamızda oluşan görüntü şu şekilde olacaktır:

Tabii ki değişkeni yazdırmak Jinja motoru sayesinde yapabildiğimiz tek işlem değil. Buna ek olarak sayfamızı daha da dinamik hale getirecek olan if koşulu ve for döngüsü de sayfamızın içine entegre edip kullanılabiliyor. Bu yapılar genelde bir değişkenin tanımlanması (sayfaya aktarılması halinde) sayfanın bir bölümünün yazdırılması ve aktarılan veri setlerinin tabloya aktarılması amacıyla kullanılır.

{% if %}

...

{% endif %} #Flask Jinja if yapısı




{% for element in array %}

<p>{{ element[0] }}</p>

<p>{{ element[1] }}</p>

...

{% endfor %} #Flask Jinja for yapısı

Temel Python’dan farklı olarak Flask Jinja’da if ve for yapıları “endif” ve “endfor” blokları ile sonlandırılmak durumundadır. HTML sayfalarının gövde kısmının </body> etiketiyle bittiği göz önünde bulundurulursa bu uygulamanın Web sayfası içerisinde hangi kısımların dinamik olarak render edileceğinin kesin olarak belirtilmesi işlevine yaradığı açıktır. Hatta öyle ki, bu yapıları es kazara kapatmadığınız zaman Flask size bir hata mesajı fırlatacaktır.

Değişkene ek olarak sayfanızda URL parametresi de kullanma imkanınız bulunmakta. Bunun için rota yapınızı şu şekilde ayarlamanız yeterlidir:

@app.route('/<url_addon>')

def hello_world_addon(url_addon):

val = 3

return render_template('index.html',val=val,url_addon=url_addon)

app.route içerisinde sol ve sağ oklar arasında belirttiğiniz değişken ismi, sayfada kullanabilmek için sizin bu rotaya karşılık gelen fonksiyonunuzda parametre olarak aynı isimle tanımlamanız gereken değişkene karşılık gelmektedir. Bu parametreyi kullanmanın en basit örneği ise bunu sayfada yazdırmaktır. Sayfamızın body etiketi içerisinde alt bilgi bloğunun üstünde şu şekilde bir değişiklik yapıyoruz:

<h1>Hello, Flask!</h1>

<p>Val = {{ val }}</p>

<p>Current URL = {{url_addon}}</p> #URL parametremizi yazdırdığımız satır

Bunun etkisini görmek için tarayıcımızdaki adres çubuğunun sonuna “/merhaba” şeklinde bir ekleme yapalım.

Alacağımız sonuç yukarıdaki gibi olacaktır.

Sonuç

Python ile kolayca backend geliştirme yapabileceğimiz güzel bir araç olan Flask, programcı dostu kullanımı, kolay, basit fakat güçlü mimarisi ve genel hafifliği ile Python ile Web geliştirme dünyasının öne çıkan üyelerinden birisidir. Saf Python söz dizimini kullanmaya, dolayısıyla Python ile normalde yapabileceğiniz her şeyi yapmaya olanak tanıyan Python Flask kütüphanesi, özellikle yapay zekanın yakın zamandaki yükselişi ile birlikte Django kütüphanesi ile beraber Web dünyasında artan bir popülerliğe sahip olacak gibi duruyor.

Eğer Flask teknolojisinde ilerlemek isterseniz, bu yazıda anlatılanlara ek olarak hata yönetimi, formlar ile detaylı çalışma, geliştirme ve yayın sunucuları gibi özellikleri üstünde hakimiyet kazanıp; Python, Web (HTML/CSS/JS) ve veritabanı alanlarında yetkin olduğunuzu kanıtlayan bireysel projeler oluşturmanız gerekecek.

keyword

Anahtar Kelime Analizi Nedir, Nasıl Yapılır?

İnternet kullanıcılarının internet üzerinde arattıkları terimleri bulmak ve bunları SEO stratejilerinde kullanmak için gerçekleştirilen çalışmaya anahtar kelime analizi denir. Web sitesi oluşturmak isteyenlerin anahtar ...
Python ile Basit Reactive AI Geliştirme

Python ile Basit Reactive AI Geliştirme

Günümüzde gittikçe daha çok ivme kazanan yapay zeka uygulamaları, şirketler kadar kendi yapay zeka uygulamalarını yazmak isteyenlerin de ilgi odağı haline geliyor. Python hakkında ...
pyhton flask

Python Flask Nedir ve Python Flask ile Web Geliştirme

Python ile uygulama geliştirme dendiğinde akla genellikle konsol uygulamaları, veri uygulamaları ve yapay zeka gelir, ancak Python dilinin yoğun olarak kullanıldığı alanlardan birisi de ...

Microsoft Copilot Nedir ve Nasıl Kullanılır?

Microsoft Copilot, Microsoft'un Windows, Edge, mobil ve Office 365 için yapay zeka aracıdır. Yapay zekanın gelişmesi ve OpenAI GPT'nin popüler olması ile birlikte teknoloji ...
Gmail akıllı yazma

G-mail Akıllı Yazma Özelliğini Açma Kapatma

Akıllı yazma aracı, e-mailler için otomatik tamamlama gibi çalışır. E-maillerin nasıl yazılacağını öğrenir ve cümlelerin tamamlanmasını sağlar. E-mail metinlerinin hızlıca oluşmasını sağlar. Yazarken öneriler ...
IMAP

İmap Nedir? İmap Kullanımının Faydaları

Birçok insan imap nedir bilmemektedir. Gerek günlük hayatta gerekse iş hayatında e-mail kullanımı çok önemlidir. E-mail protokolü sayesinde kişiler her cihazdan e-mailerini kontrol edebilir, ...
mac windows

Mac vs Windows Bilgisayar Özet Karşılaştırma

Bilgisayar teknolojisi, günümüzde büyük ölçüde Windows ve Mac işletim sistemleri üzerine odaklanmış durumda. Her iki işletim sistemi de benzersiz özelliklere ve kullanıcı deneyimine sahiptir ...
Gmail görev oluşturma

G-mail Görev Oluşturma G-mail Alanlar Düzenleme

G-Mail’den görev oluşumu çok basittir. Öncelikle, G-Mail hesabına giriş yaparak, sağ üstteki alan "Görevler"e tıklanmalıdır. Açılacak pencerede, yeni görevin eklenebilmesi için "Görev Ekle"ye tıklanmalıdır ...
MAPI EWS

MAPI EWS Nedir Ne İşe Yarar Ne Amaçla Kullanılır?

Teknolojinin gelişim göstermesi ile birlikte MAPI EWS nedir ne amaçla kullanılır pek çok kişi tarafından merak edilmektedir. İnternet önemli iletişim kaynaklarındandır. Gere iş alanlarında ...
Shopify

Shopify DNS Yönlendirmesini Yapmak Adım Adım

Sahip olduğunuz alan adını Shopify’e yönlendirmek istediğinizde hangi işlemleri gerçekleştirmeniz gerektiğini merak ediyor olabilirsiniz. Shopify DNS Yönlendirmesini Yapmak Adım Adım aktaracağımız bu yazımız sizler ...