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ı
xxxxxxxxxx
PHP();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 OS
diyerek arayabilirsiniz. - Python'un paket yükleme ve yönetim yazılımı
pip
kurulu olmalıdır. Kurulum -> Installation — pip 9.0.2 documentation - Python için işletim sisteminden izole bir şekilde kullanabileceğiniz bir araç olarak
virtualenv
kuracağı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 Flask
terminale yazıyoruz.- Kurulumdan sonra kontrol etmek için. Terminalde
python
yazıp, python'unun shell platformuna geçiş yapın.>>> import flask
dediğ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 myapp
diyerek bir klasör oluşturalım.myapp/
klasörü altında__init__.py
dosyasını oluşturuyoruz. Python'da__init__.py
dosyaları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__.py
dosyaları 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
# external
from flask import Flask
app = 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. #external
satırını dışarıdan yüklediğimiz paketler için,#internal
satı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
# internal
from 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/index
URL'ini girersedef index()
methodu çağırılacak ve"Selam Python!"
stringi dönecektir. - Şimdi
main.py
dosyamı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
# internal
from myapp import app
- Her şeyden emin olmak için proje yapımıza göz atalım:
xxxxxxxxxx
blog/
├── 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/index
hangisini yazarsak yazalımdef index()
methodu çağırılıyor ve bize Selam Python! dönüyor. - CTRL + C ile terminalden programı durdurabilirsiniz.
Yorumlar