Flask Rehberi

Kurulum

Flask’ı kurmak için pip kullanmanızı tavsiye ederim. Aşağıdaki komutu kullanabilirsiniz:
pip install flask
Diğer paket kurulumlarında olduğu gibi bunu da virtualenv ile kullanmanız şart olmasa da oldukça gerekli.

Basit Bir Flask Uygulaması

Basit bir Flask uygulaması aşağıdaki gibi olabilir:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def merhaba():
    return 'Merhaba dunya!'

if __name__ == '__main__':
    app.run()

Bu kadar kod web sunucusunu çalıştırmaya ve bir satır yazı döndürmeye yeterli. Dosyayı merhaba.py olarak kaydedin. Sunucuyu çalıştırmak için:

python merhaba.py

Running on http://127.0.0.1:5000/ şeklinde bir satır dönmesi gerekiyor. Bu sayfayı ziyaret ederek “Merhaba dunya!” yazısını görebilmelisiniz. Kodlarda her değişiklik yaptığınızda sunucuyu durdurup tekrar başlatmak yerine
app.run(debug=True) ile sunucuyu başlatabilirsiniz. Elbette debug seçeneğini gerçek sunucunuzda asla kullanmamanız gerekiyor.

Routing

Flask’ta route için decorator’lar kullanılıyor.

@app.route('/')
@app.route('/anasayfa')
def anasayfa():
    return 'Ana sayfa'

şeklindeki bir örnekte kök dizine (yukarıdaki adres) ve index sayfasına ziyaretler aynı fonksiyonu (anasayfa) çağıracaktır.
Adreslere değişken eklemek için aşağıdaki yol izlenebilir:

@app.route('/kullanici/<kullaniciadi>')
def welcome(kullaniciadi):
    return 'Merhaba %s' % kullaniciadi

Tarayıcınıza /kullanici/bora yazdığınızda “Merhaba bora” yazısını döndürecektir.

URL Yapılandırma

Uygulamanızda tanımladığınız url’leri uygulamanızda başka yerlerde kullanırken olduğu gibi yazmak uygulamanın genişletilebilirliği ve yönetilebilirliği açısından ileride zorluk çıkmasına neden olabilir. Tanımladığınız url’de değişiklik yaptığınız zaman bütün kodda gerekli yerleri bulup düzeltmeniz gerekecektir. Bunun yerine bunları üreterek tek bir yerden yönetimini sağlayabilirsiniz.

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

@app.route('/kullanici')
def kullanici():
    return 'Kullanici sayfasi'

@app.route('/yonetici')
def yonetici():
    return 'Yonetici sayfasi'

@app.route('/giris/<kullanici>')
def giris(kullanici):
    if kullanici == 'yonetici':
        return redirect(url_for('yonetici'))
    else:
        return redirect(url_for('kullanici'))

if __name__ == '__main__':
    app.run(debug=True)

Yukardaki kodu bir dosyaya kaydedip çalıştırırsanız, tarayıcıda /giris/yonetici adresini ziyaret ettiğinizde yönetici sayfasını, diğer herhangi bir kullanıcı adı (/giris/kullanici veya /giris/bora) ile ziyaret ettiğinizde kullanıcı sayfasını göreceksiniz. Bu işlemin faydası, daha sonra bir nedenle adresi değiştirmek istediğinizde diğer kullandığınız yerlerde değişiklik yapmaya gerek kalmaması.

HTTP Metotları

Varsayılan olarak route’lar GET metotunu destekler. Form göndermek istediğinizde POST metotunu da desteklenen metotlar arasına eklemeniz gerekebilir.

@app.route('/giris', methods=['GET', 'POST'])
def giris():
    if request.method == 'POST':
        #login işlemleri
    else:
        #form göster

Statik Dosyalar

Css ve javascript dosyaları gibi statik dosyaları kullanabilmek için uygulama klasörünüzde static isimli bir klasör yaratmanız gerekir. Bu statik dosyalara aşağıdaki şekilde url yaratabilirsiniz:

url_for('static', filename='style.css')

Template Renderlama

Flask varsayılan olarak Jinja2 template sistemini kullanır. Htmldosyalarını render etmek için render_template metotunden yararlanılır. Yarattığınız html dosyalarını uygulama klasörü içinde template klasörü altında saklayabilirsiniz.

from flask import render_template

@app.route('/giris/<ad>')
def giris(ad):
    return render_template('giris.html', ad=ad)

Çağırılan html sayfası da aşağıdaki şekilde olabilir:

<h1>Merhaba {{ ad }}</h1>
Jinja2 template sistemi hakkında daha fazla bilgi için sitesini ziyaret edebilirsiniz.

Leave a Reply

Your email address will not be published. Required fields are marked *