Python ve Flask Framework ile Web Uygulaması Geliştirelim

Python ve Flask Framework ile Web Uygulaması Geliştirelim

2004 yılında Pocoo, uluslararası bir grup Python meraklısı tarafından kurulan bir topluluktur. Flask Framework, Bu topluluğun üyelerinden Armin Ro...

Herkese merhaba bu makalede Python serisinin devamı niteliğinde bilgiler vereceğim. Python web teknolojilerinde henüz çok yaygın kullanılmasa da yavaş yavaş bu alanda kayda değer gelişmeler yaşanıyor. Python ve Web deyince akla ilk Django gelir gelişmiş bir framework olmasına rağmen bana karmaşık geldi ve bu sebeple alternatifleri araştırmaya başladım. Seçeneklerin arasından basitliği ve işlevselliği açısından en uygunu Flask Framework hoşuma gitti ve bunun üzerine eğilmeye başladım. Bu makalede bu framework ile basit bir web uygulaması geliştireceğiz bunun için bir web server'a gerek yok çünkü dahili web server yazılımı ile localhost'ta da çalışabiliyorsunuz.

2004 yılında Pocoo, uluslararası bir grup Python meraklısı tarafından kurulan bir topluluktur. Flask Framework, Bu topluluğun üyelerinden  Armin Ronache tarafından bir nisan şakası olarak kurulan daha sonra ciddi gelişmeler kaydeden bir Framework'tür. BSD lisansına sahiptir. Sitesinde yer alan tanımı ile Werkzeug üzerinde çalışan Jinja template enginekullanan python tabanlı bir web uygulama microframework'tür. Tanım içerisinde bir çok farklı kavram görmüş olabilirsiniz. Bunlardan kısaca bahsetmek gerekirse; 
Werkzeug python için WSGI yardımcı kütüphanesidir yani PHP'deki FastCGI gibi sunucu ve uygulama arasında daha hızlı iletişim kurulmasını sağlayarak performans artırır. Jinja ise python için bir template engine kütüphanesidir yani Html dosyaları içerisine yazılan özel etiketler ile dinamik görünümler oluşturmanızı sağlar. 2016 yılının ortalarından itibaren Github'daki en popüler web framework'üydü. Son kararlı sürümü olan 0.12 Aralık 2016 tarihinde yayınlandı

Bazı Özellikleri Aşağıdaki Gibidir

  • Geliştirme sunucusu ve hata ayıklayıcıyı içerir
  • Birim testi için entegre destek sağlar.
  • RESTful istek gönderimi
  • Jinja2 şablonu kullanır
  • Güvenli çerezleri destekler
  • % 100 WSGI 1.0 uyumlu
  • Unicode tabanlı
  • Kapsamlı dökümantasyon
  • Google App Engine uyumluluğu
  • İstenen özellikleri geliştirmek için kullanılabilen uzantılar

Bazı popüler uzantıları şöyledir. Flask-Cache, Flask-CouchDB, Flask-HTMLBuilder, Flask-LessCss, Flask-PonyWhoosh, Flask-Rest-JSONAPI diğer uzantılar için burayı ziyaret edebilirsiniz.

Kurulumu oldukça basittir. İlk önce bilgisayarınızda python kurulu olması gerekir değilse Python Dersleri ve Kurulum isimli makalemi okuyarak kurulum adımlarını takip edebilirsiniz.  Ardından komut satırından "pip install Flask" komutunu çalıştırarak kurulumun bitmesini bekleyin. Ardından application isimli bir klasör oluşturun bu şart değildir fakat düzenli proje yönetimi için tercih edilir daha sonra app.py isimli bir dosya oluşturun ilk uygulama için aşağıdaki gibi düzenleyin

from flask import Flask
app = Flask(__name__)
 
@app.route("/")
def hello():
    return "Hello World!"
 
if __name__ == "__main__": 
    app.run()

Daha sonra bu dosyayı çalıştırın console ekranında

* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

gibi bir mesaj görüyorsanız herşey yolundadır tarayıcınızdan 127.0.0.1:5000 adresine gittiğinizde ekranda "Hello World!" içeriğini görmelisiniz.

 

URL Routing Mekanızması

Url routing mekanızmasını kullanmak için aşağıdaki örneği inceleyin

@app.route('/hello')
def hello():
    return 'Hello, World'
 
@app.route('/product/<product_id>')
def show_product_detail(product_id):
    # show product detail
    return 'Product ID %s' % product_id
 
@app.route('/post/<int:post_id>')
def show_post(post_id):
    # show the post with the given id, the id is an integer
    return 'Post %d' % post_id

Template Kullanımı (Rendering Template)

Gelişmiş web uygulamaları geliştirmek için template kullanabilirsiniz. Template engine olarak Jinja Library kullanılıyor. bunun için application klasörünün altına templates isimli bir klasör oluşturun bu özel bir klasördür ismini değiştiremezsiniz. Bu klasör altına index.html isimli bir html dosyası ekleyin. Dosya içeriğini aşağıdaki gibi güncelleyin.

<!doctype html>
<title>Hello from Flask</title>
{% if name %}
  <h1>Hello {{ name }}!</h1>
{% else %}
  <h1>Hello, World!</h1>
{% endif %}

App.py dosyanızın içeriğini aşağıdaki gibi düzenleyin

from flask import render_template
 
@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
    return render_template('index.html', name=name)

Bu uygulama ile Url'den gönderilen name parametresini eğer dolu ise html içerisine yazıyoruz.

Daha sonraki makalelerimde fırsat buldukça File Upload, Sessions, Cookies, Redirection, Http Errors, Includes konularını anlatacağım. Umarım faydalı olmuştur.

Mustafa Tayyip Yetiş
Yazılım Geliştirme Uzmanı

M.Tayyip Yetiş
Yazılım Geliştirme Uzmanı
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git