Flask, Python programlama dilinde uygulama geliştirmek için kullanılan bir küçük ölçekli[1] bir web çerçevesi modülüdür. Web uygulamalarını kolayca geliştirmeyi sağlar.
Web çerçeveleri web uygulaması geliştiricilerinin protokol, iş parçacığı yönetimi vb. gibi düşük düzeyli ayrıntılar hakkında endişelenmeden uygulamalar yazmasına olanak tanıyan bir kitaplıklar ve modüller koleksiyonunu temsil eder.
Flask nedir?
Flask, Python ile yazılmış bir web uygulama çerçevesidir. İlk olarak Poocco adlı uluslararası Python meraklılarından oluşan bir ekibi yöneten Armin Ronacher tarafından geliştirildi. Flask, Werkzeg WSGI araç takımına ve Jinja2 şablon motoruna dayanmaktadır. Her ikisi de Pocco projeleridir.
Flask ne işe yarar?
Flask, mantıklı varsayılanlarla yapılandırma ve kurallar sağlar. Flask, Python’da web uygulamaları oluşturmayı kolaylaştıran kullanışlı araçlar ve özellikler sağlayan küçük ve hafif bir Python web çerçevesidir. Yalnızca tek bir Python dosyası kullanarak hızlı bir şekilde bir web uygulaması oluşturabileceğiniz için geliştiricilere esneklik sağlar. Flask yeni geliştiriciler için daha erişilebilir bir çerçevedir. Peki Flash kullanarak başka neler yapılabilir?
- Web Uygulamaları Oluşturma: Flask, temel olarak web uygulamalarını geliştirmek için tasarlanmıştır. Web siteleri ve web tabanlı hizmetler oluşturabilirsiniz.
- Rutin Yönlendirme: Flask, URL’leri belirli işlevlere yönlendirmenizi sağlar. Kullanıcılar farklı URL’leri açtığında ilgili işlevlerin çalışmasını sağlar.
- Dinamik İçerik Üretimi: Flask, Jinja2 adlı bir şablon motoru kullanarak dinamik içerik oluşturmanıza olanak tanır. Bu sayede HTML sayfalarını verilerle doldurabilirsiniz.
- Form İşleme ve Doğrulama: Web formları oluşturabilir, kullanıcıların gönderdiği verileri alabilir ve doğrulayabilirsiniz.
- Veritabanı Entegrasyonu: Flask, SQLAlchemy gibi veritabanı araçlarını entegre ederek veritabanıyla etkileşimde bulunmanıza yardımcı olabilir.
- Web Güvenliği: Flask, Cross-Site Scripting (XSS) ve Cross-Site Request Forgery (CSRF) gibi yaygın web güvenlik saldırılarına karşı koruma sağlayan bazı özelliklere sahiptir.
- WSGI Uyumlu: Flask, Web Server Gateway Interface (WSGI) uyumlu olduğu için farklı WSGI uyumlu sunucularla sorunsuz bir şekilde çalışabilir.
- Eklentiler ve Genişletilebilirlik: Flask, ihtiyaca göre özellikler eklemek için eklentilere izin verir. Bu sayede projenizi istediğiniz şekilde özelleştirebilirsiniz.
Özellikler
Flask URL yönlendirme, şablon motoru gibi birçok özelliğe sahiptir. Bir WSGI[2] web uygulaması çerçevesidir. Flask’ın öne çıkan özellikleri şunlardır:
- Hafif ve Esnek: Flask, temel işlevleri sunarken gereksiz karmaşıklığı ortadan kaldırmak için tasarlanmıştır. Bu sayede geliştiriciler, uygulama yapısını ihtiyaçlarına uygun şekilde oluşturabilirler.
- Minimalist Tasarım: Flask, temel işlevleri sağlayan bir çekirdek (core) yapısına sahiptir. Diğer ihtiyaç duyulan özellikler, “extension” adı verilen eklentiler aracılığıyla uygulamaya eklenir.
- Jinja2 Şablon Motoru: Flask, Jinja2 adlı güçlü bir şablon motoru kullanır. Bu, HTML sayfalarını dinamik verilerle doldurmayı kolaylaştırır.
- Rutin Yönlendirme: Flask, URL’leri işlevlere (“view functions”) yönlendirmek için bir yönlendirme sistemi sunar. Bu, farklı sayfaların ve işlevlerin belirli URL’lere atanmasını sağlar.
- Örnek Uygulama Sunucusu: Flask, geliştirme aşamasında entegre bir sunucu sunar. Bu sayede uygulamanızı hızlıca test edebilirsiniz.
- WSGI Uyumlu: Flask, Web Server Gateway Interface (WSGI) uyumlu olduğu için farklı WSGI uyumlu sunucularla (örneğin Gunicorn veya uWSGI) sorunsuz çalışabilir.
- Genişletilebilirlik: Flask, özelliklerini ihtiyaca göre genişletmek için eklentilere izin verir. Bu, daha fazla özelliği ihtiyaca göre eklemenizi veya çıkarmanızı kolaylaştırır.
- ORM Desteği (Opsiyonel): Flask, SQLAlchemy gibi popüler nesne ilişkisel eşleme (Object-Relational Mapping – ORM) araçlarıyla entegre çalışabilir.
- Form İşleme ve Doğrulama: Flask, web formlarını kolayca oluşturmanıza ve doğrulamanıza yardımcı olan araçlar sağlar.
- Güvenlik Özellikleri: Flask, Cross-Site Scripting (XSS) ve Cross-Site Request Forgery (CSRF) gibi yaygın web güvenlik saldırılarına karşı koruma sağlamak için özellikler içerir.
- Dökümantasyon ve Topluluk Desteği: Flask’in kapsamlı ve kullanıcı dostu bir dökümantasyonu vardır. Ayrıca Flask’e odaklanmış geniş bir geliştirici topluluğu bulunmaktadır.
- Veritabanı Desteği: Flask, veritabanıyla çalışmayı kolaylaştırmak için SQLAlchemy gibi popüler veritabanı araçlarını entegre edebilir.
Dipnotlar
[1] Flask’a genellikle bir mikro çerçeve (microframework) denir. Uygulamanın özünü basit ve ölçeklenebilir tutmak için tasarlanmıştır. Mikro, Flask çerçevesinin basit ama genişletilebilir olduğu anlamına gelir. Tüm kararları verebilirsiniz: hangi veritabanını kullanacağınız, bir ORM istiyor musunuz vs, Flask sizin için karar vermez.
[2] Web Sunucusu Ağ Geçidi Arabirimi (Web Server Gateway Interface)

