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

Flask, bir web server geçişi açan Werkzeug ve Django’daki HTML şablonlarına benzer bir yapı sunan Jinja2 üzerine kurulmuş bir microframework olduğunu söylüyor. Yani Flask ile Django kadar esnek olmasa da web sayfaları hazırlayıp sunabileceğiz. İçerisinde barındırdığı web sunucusunun büyümeye müsait olmaması sebebiyle büyük projelerde üretim aşamasında kullanılmaması öneriliyor.

Kurulum için pip install Flask komutunu vermemiz yeterli. Daha detaylı kurulum bilgileri için şu sayfa yardımcı olacaktır.

Basit bir örnekle kullanımı anlatmaya çalışayım. Öncelikle aşağıdaki Python kodlarını main.py olarak bir dosyaya kaydedelim.

from flask import Flask
app = Flask(__name__)

@app.route("/")
def merhaba():
    return "İlk sayfa"

Daha sonra bir komut penceresi açıp, bu dosyamızın yolunu içeren bir değişken tanımlayıp sunucumuzu başlatıyoruz.

# windows için
set FLASK_APP=C:\dosya\main.py
# linux
export FLASK_APP=\dosya\main.py

flask run

Hangi işletim sistemini kullanıyorsanız ve kendi dosyanızın yolunu girerek değişkeni oluşturup run komutu verdiğinizde Running on http://127.0.0.1:5000/ bilgisi ekrana gelmeli. Tarayıcıda bu adrese gittiğimizde hazırladığımız sayfayı görebiliriz.

Sayfamızı eğer ağ üzerinden de görülebilir yapmak istiyorsak –host=0.0.0.0 parametresini eklememiz gerekli.

flask run --host=0.0.0.0

Ağ üzerindeki IP adresimizi, aynı ağa bağlı başka bir cihaz üzerinde açarsak hazırladığımız sayfayı tekrar görebiliriz.

Debug Mode

İlk sayfamızı hazırlayıp sunduk. Şöyle bir zorluğumuz var şu an, geliştirme yaparken, kodumuzu değiştirdik ve kaydettik diyelim. Sayfamızı yenilediğimizde hala eski sürümü göreceğiz. Yeni sürümün yayınlanması için komut satırına flask run komutunu tekrar girmemiz gerekli. Geliştirme sürecinde çekilecek dert değil, bu yüzden Flask Debug Mode diye bir mod sunmuş. Komut satırına export FLASK_DEBUG=1 (Windows için set) diyerek debug değişkenini 1 yapıyoruz ve tekrar flask run komutunu veriyoruz. Bundan sonra bir değişiklik yapıp kaydettiğimizde, Flask kendiliğinden sunucuyu tekrar başlatıp yeni sürümü görmemizi sağlayacak.

Routing

Bir adım daha ileri taşımak için uygulamamızı, URL’yi aktif olarak kullanabilmemiz gerekli. Örneğin bir giriş sayfası(/giris) hazırlayıp gelen kullanıcıyı bu sayfaya yönlendirmek isteyebiliriz. Şu an http://127.0.0.1:5000/giris adresi bize Not Found olarak gözükecektir.

Flask, URL yönlendirmeleri kullanabilmek için @app.route dekoratörünü sağlar. İlk kodumuza şunları ekleyerek çalıştıralım.

@app.route('/giris')
def giris():
    return '''
        
'''

Burada basit olarak “/giris” yoluyla bir istek gelirse döneceği HTML’i verdik Flask’a. Şimdi kök adresimizi düzenleyelim.

from flask import Flask, request,redirect, url_for
app = Flask(__name__)

@app.route("/", methods=["GET", "POST"])
def merhaba():
    if request.method == 'POST':
        sifre = request.form["sifre"]
        if sifre == "123":
            return "Şifre doğru içeriği görebilirsiniz."
        else:
            return redirect(url_for('giris'))
    else:
        return redirect(url_for('giris'))

En üst satırda Flask içerisinden kullanacağımız modülleri çağırdık.
Dekoratörümüze methods parametresini ekledik, formumuzdan gelecek post isteklerini de yakalayabilsin.
Post metoduyla bir istek gelirse sifremizi alıp kontrol ettik, eğer doğruysa içeriği gösteriyor değilse redirect fonksiyonuyla giriş formuna yönlendirme yaptık.
url_for fonksiyonu ters yolla url oluşturmamızı sağlar. İstediğimiz fonksiyonun adını metin olarak verdiğimizde o fonksiyon için tanımlı URL’yi dönecektir.

Basit bir örnek yaptık, ama Flask’ın potansiyeli geniş. Daha karışık projeler için de hızlı çözüm olabilecektir. Şuradaki hızlı başlama bölümünde pek çok konu üzerinden hızlıca geçmişler.

Yazının ikinci bölümü: Python Kullanarak Flask ile Basit Web Sayfaları Hazırlama ve Sunma #2


Yayımlandı

kategorisi

yazarı:

Yorumlar

“Python Kullanarak Flask ile Basit Web Sayfaları Hazırlama ve Sunma #1” için bir cevap

  1. Flask nasıl yükleniyor? pip komutuyla kullandığımda daha baştan hata alıyorum invalid syntax “install” lütfen yardımcı olun

Eren için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir