Python ile Web Uygulama Geliştirme
Kavramlar
- Python ile Web uygulama geliştirirken bazı kavramların anlamlarını öğrenmek geliştirme sürecinde bize çok faydalı olacaktır.
WSGI ( Web Server Gateway Interface )
- Web Server ile Web Application'ın nasıl iletişim kuracağını tanımlayan bir şartnamedir. (detaylandırılmış kurallardır.)
Werkzeug
- Python için yardımcı bir WSGI kütüphanesidir.
- Güçlü bir debugger'a, tam özellikli request ve response objelerine, cache kontrol mekanizmalarına, cookie işlemlerine, dosya upload işlemlerine, URL routing sistemlerine ve daha bir çok özelliğe sahiptir. (Kaynak: Welcome | Werkzeug (The Python WSGI Utility Library))
Template Engine
- Template: Bir bilgiyi düzenlemek, formatlamak, şekillendirmek için yardımcı bir şablon, kalıp.
- Template Engine: Template'leri bir araya getirerek veri modelleriyle sonuçlar üretmemizi sağlayan yazılımlardır.
- Template Engine olmadan programların görünüşü:
xxxxxxxxxx<HTML><TAG></TAG><TAG></TAG><TAG></TAG><TAG></TAG><TAG></TAG><TAG></TAG>PHP();PHP();PHP();PHP();PHP();PHP();PHP();PHP();<TAG></TAG>PHP();PHP();PHP();PHP();<TAG></TAG>PHP();PHP();<TAG></TAG><TAG></TAG><TAG></TAG></HTML>- Template Engine ile programlarımızın görünüşü: php dosyaysı
xxxxxxxxxxPHP();PHP();PHP();PHP();PHP();PHP();PHP();PHP();PHP();- html dosyası
xxxxxxxxxx<HTML><TAG></TAG><TAG></TAG><TAG></TAG><TAG></TAG><TAG></TAG><TAG></TAG></HTML>- Template Engine ile html template'lerimizi parçalara ayırarak da kullanabiliriz. Bu işlemleri ilerleyen bölümlerde extend, include gibi anahtar kelimelerle yapacağız. (Kaynak: TinyButStrong - Template Engines explained )

Jinja 2
- Jinja2 Python programlama dili için kullanılan, BSD License altında lisanslanmış, Armin Ronacher tarafından geliştirilmiş bir template engine'dir. Daha fazla bilgi ve dökümantasyonu için : Welcome to Jinja2 — Jinja2 Documentation (2.10) sitesini ziyaret ediniz.
Flask Microframework
- Armin Ronacher tarafından geliştirilen Flask Microframework, Python tabanlı olup Werkzeug toolkiti ve Jinja2 template engine'ı kullanan open source bir web uygulama geliştirme framework'üdür.
- Github linki > GitHub - pallets/flask: The Python micro framework for building web applications.
- Dökümantasyon -> Welcome to Flask — Flask Documentation (0.12)
- Armin Ronancher Github -> mitsuhiko (Armin Ronacher) · GitHub
- Biz öğrenirken Miguel Grinberg'in blog sayfasından, youtube kanallarından, ve tabii ki stackoverflow'dan yararlanacağız. Kaynakları da belirtmeye özen göstereceğiz.
- Miguel'in ders serisi > The Flask Mega-Tutorial Part I: Hello, World! - miguelgrinberg.com
Python, Virtual Environment & Flask Kurulum ( Installation )
- Python3 indirmek için > Download Python | Python.org
- Google'da işletim sisteminize uygun kurulumları bulabilirsiniz.
Python3 install Windows veya Ubuntu(Linux) veya Mac OSdiyerek arayabilirsiniz. - Python'un paket yükleme ve yönetim yazılımı
pipkurulu olmalıdır. Kurulum -> Installation — pip 9.0.2 documentation - Python için işletim sisteminden izole bir şekilde kullanabileceğiniz bir araç olarak
virtualenvkuracağız. Kurulum -> Installation — virtualenv 15.1.0 documentation
NOT: Ben geliştirme sürecinde Linux Mint kullanacağım
- Gerekli ortamı hazırladıktan sonra, web ugulama geliştirmek için hazırlıklara başlayalım.
xxxxxxxxxx$ mkdir blog # make directory komutu ile bir klasör oluşturdum.$ cd blog # change directory komutu ile blog klasörüne girdim. xxxxxxxxxx$ python3 -m virtualenv env # env isminde sanal bir python ortamı kuruyoruz.veya$ virtualenv env # diyerek de kurabilirsiniz.- Python sanal ortamına geçiş yapalım.
xxxxxxxxxx$ source env/bin/activate # diyerek geçiş yapıyoruz# Terminal komut satırının başında (env) ismi belirecek.# Bendeki görünüm:(env) kayace@kayace-K53SV ~/flask/blog $# python versiyonunu kontrol etmek için$ python --version # yazıp görebilirsiniz.Python 3.5.2- Hızlı ve kolay biçimde Flask'i kuruyoruz.
$ pip install Flaskterminale yazıyoruz.- Kurulumdan sonra kontrol etmek için. Terminalde
pythonyazıp, python'unun shell platformuna geçiş yapın.>>> import flaskdediğinizde herhangi bir hata almadıysanız kurulum başarıyla tamamlanmıştır. - CTRL + D veya
>>> exit()yazarak python shell ortamında çıkabilirsiniz. $ mkdir myappdiyerek bir klasör oluşturalım.myapp/klasörü altında__init__.pydosyasını oluşturuyoruz. Python'da__init__.pydosyalarını boş da olsa python klasörlerimizin içine yazmalıyız. Çünkü modüllerimizi import ettiğimiz zaman klasörlerimizin(dizinlerimizin) altındaki dosyaların da import edilmesi gerekiyor. Eğer__init__.pydosyaları olmazsa , modülünüzü import etseniz ya hata verecek ya da göremeyecektir.- Büyük çaplı uygulamalar için proje yapısının nasıl olması gerektiğini de göreceğiz.
myapp/__init__.py
xxxxxxxxxx# externalfrom flask import Flaskapp = Flask(__name__)from myapp import routes- flask paketinden import ettiğimiz Flask sınıfından yeni bir nesne oluşturup app isminde bir referansa bağlıyoruz.
__name__parametresi ile Flask'a uygulamamızın nereye ait olduğunu belirtmiş oluyoruz. #externalsatırını dışarıdan yüklediğimiz paketler için,#internalsatırını da kendi yazdığımız paketler, modüller için kullanacağız. Kod okunurluluğu açısından böyle yapmayı istedik.myapp/routes.py
xxxxxxxxxx# internalfrom myapp import app.route('/').route('/index')def index(): return "Selam Python!"- @app.route decorator'ı hangi method için yazıldıysa, aldığı parametre veya parametreler (
/, /index) ile o methodu ilişkilendirir. Burada bizim yaptığımız, ne zaman kullanıcı browser'da/veya/indexURL'ini girersedef index()methodu çağırılacak ve"Selam Python!"stringi dönecektir. - Şimdi
main.pydosyamızı oluşturalım. Bu dosya ana uygulama modülü (main application module) olacaktır. Yani projemizi bunun üzerinden çalıştıracağız. blog/main.py
xxxxxxxxxx# internalfrom myapp import app- Her şeyden emin olmak için proje yapımıza göz atalım:
xxxxxxxxxxblog/ ├── main.py └── myapp ├── __init__.py └── routes.py └── env/- Her şey tamam! Projemizi çalıştırmak için terminalden
(env) $ export FLASK_APP=main.py( eğer windows'taysanız export yerine set yazalım.) yazıyoruz.=işaretinden önce ve sonra boşluk bırakmayınız!
xxxxxxxxxx(env) $ flask run * Serving Flask app "main" * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)- Şimdi istediğiniz browser'dan
http://127.0.0.1:5000/adresini girerek Flask'a merhaba deyin!

- Tebrikler! Python ile ilk web uygulamanızı başarıyla tamamladınız.
- Gördüğünüz gibi
/veya/indexhangisini yazarsak yazalımdef index()methodu çağırılıyor ve bize Selam Python! dönüyor. - CTRL + C ile terminalden programı durdurabilirsiniz.
Yorumlar