Bu Python Flask eğitiminde Flask nedir, Python kurulumu, Virtualenv, Flask Hello World örneği, kod örnekleri, hata ayıklama ve test bölümleri anlatılmaktadır:
Web sitesi geliştirme, bir beceriden çok bir sanattır. Gerçek bir başarı olması için gerekli olanı yaratmak için sabır ve çalışkanlığın yanı sıra azim, cesaret ve özveri gerektirir. Bu günlerde, öğrencilerin mümkün olan en kısa sürede hız kazanmaları çok önemlidir.
Bu Python Flask eğitimini, öğrencilerin Python 3 kullanarak basit ve karmaşık web programlamayı hızlandırmaları ve uygulamaları için hazırladık.
Bu Python Flask dersi daha çok Python, Virtualenv ve diğer temel paketlerin kurulumunu kapsayacak bir flask başlangıç dersi gibidir. Bu eğitim serisinde, Flask'ı diğer gerekli Flask eklentileriyle birlikte kuracağız. Ayrıca Git Actions kullanarak kod hata ayıklama, test etme ve sürekli entegrasyon hakkında bir bölüm de ekledik.
Bu Flask Serisindeki Eğitimlerin Listesi
Eğitim #1: Python Flask Eğitimi - Yeni Başlayanlar İçin Flask'a Giriş
Eğitim 2: Örneklerle Flask Şablonu, Formu, Görünümü ve Yönlendirmesi
Eğitim #3: Flask Veritabanı İşleme - Flask Veritabanı ile Nasıl Kullanılır
Eğitim #4: Blueprint & Bootstrap ile Flask Uygulaması ve Flask Projesi Düzeni
Eğitim #5: Web Uygulamaları İçin Flask Tasarım Kalıpları ve En İyi Uygulamalar
Öğretici #6: Örnekli Flask API Eğitimi
Eğitim #7: Django Vs Flask Vs Node: Hangi Framework Seçilmeli
Eğitim #8: Cevaplarıyla Birlikte En Popüler 31 Python Flask Mülakat Sorusu
Flask Nedir
Flask bir web geliştirme çerçevesidir. Yerleşik bir geliştirme sunucusu ve hata ayıklayıcısı olan bir çerçevedir.
Flask çerçevesi, web geliştiricilerinin esnek olmasına ve yazılım geliştirme topluluğunda sıkça yayınlanan değişikliklere rahatça uyum sağlamasına olanak tanıdığı için kendi başına diğer arketiplerden farklıdır.
Flask Ne İçin Kullanılır
Python programlama dilinde Web Uygulamaları geliştirmek için Flask çerçevesini kullanıyoruz. Geliştirilmekte olan uygulamaya zenginlik ve anlam katmak için diğer üçüncü taraf hizmetleri ve API'leri ile entegre olur. Flask'ın temel kavramları basittir ve küçük bir ayak izine sahiptir.
Bir Flask GitHub deposu yardımıyla web geliştirmeyi anlamak için bu Python Flask eğitimiyle başlayalım. Ancak, devam etmeden önce, tartışılan kod örneklerini kolayca takip etmek için lütfen projeyi Github'dan klonlayın.
Ön Koşullar
Bu bölümde belirtilen başlıklar dışında bir Github Hesabı oluşturmanızı öneririz. Ön koşullarda aşağıda belirtilen adımlarla ilerleyelim.
Adım 1: Python'u Kurun
Python 3'ü kurup kurmadığınızı kontrol edin. Eğer kurmadıysanız, Python 3'ü buradan indirin ve İşletim Sisteminize göre kurun.
Adım 2: Bir Python Sanal Ortamı Oluşturun
Aşağıdaki komutu kullanarak bir sanal ortam oluşturun.
python3 -m venv venv
Python sanal ortamını etkinleştirmek için aşağıdaki komutu kullanın.
source venv/bin/activate
Aşağıda sanal ortamın etkinleştirilmesi ve devre dışı bırakılmasına ilişkin bir örnek verilmiştir.
Bu eğitimdeki sonraki tüm komutlar etkinleştirilmiş bir sanal ortamda çalıştırılmalıdır. wheel paketini yükleyin, böylece sanal ortam içinde tekerlekler oluşturabiliriz.
pip install tekerlek
Adım 3: Flask İndirme ve Yerleştirme
Flask indirme adımlarını gerçekleştirmemiz ve aşağıda belirtilen adımları kullanarak Flask'ı kurmamız gerekiyor.
Şimdi Flask'ı yükleyin.
pip flask yükleyin
Bazılarımız en son kaynak kodu değişiklikleriyle birlikte çalışmayı sever. Flask kaynaklarındaki en son değişikliklerle yüklemek için aşağıda verilen komutu kullanabiliriz.
Geçici bir dizin oluşturun.
mkdir tmp
Şimdi Github deposundan Flask'ı yükleyin. Aşağıdaki komutun çalışması için internete bağlı kalmanız gerekir.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Başarılı kurulumu kontrol etmek için konsol çıktılarına bakın. Şimdi Flask komutlarına erişip erişemediğimizi kontrol edin.
flask --help
Bir Flask uygulamasının yokluğuyla ilgili bazı istisnalar görebilirsiniz. Ancak, herhangi bir Flask uygulaması oluşturmadığımız için bunları göz ardı edin. Uygulamamız, Werkzeug web çerçevesi ve Jinja şablonlama motoru üzerinde bir sarmalayıcı olan Flask'ın bir örneğidir.
Werkzeug
Werkzeug bir WSGI araç setidir. WSGI sadece web sunucularının web sunucularını iletmesi için bir çağrı kuralıdır. web talepleri Python programlama dilinde yazılmış web uygulamalarına.
Jinja
Şablonlama, web geliştiricileri için önemli bir beceridir. Jinja, Python için tam özellikli ve popüler bir şablonlama motorudur. Oldukça etkileyici bir dildir ve şablon yazarlarına sağlam bir araç seti sağlar.
Adım 4: MongoDB'yi Kurun
MongoDB'yi yüklemek için aşağıda belirtilen adımları izleyin. Debian tabanlı bir Linux'a yüklemek için adımları özetledik. Başka bir işletim sistemi kullanıyorsanız, bağlantıya erişin ve istediğiniz işletim sistemine göre yükleyin.
MongoDB genel GPG anahtarını içe aktarmak için gnupg'yi yükleyin.
sudo apt-get install gnupg
Şimdi aşağıdaki komutu kullanarak anahtarı içe aktarın.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc
Linux dağıtımınıza göre kaynak listesi dosyasını oluşturun. Biz Debian'a göre kaynak listesini ekledik.
echo "deb //repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main"
Güncelleme komutunu çalıştırın
sudo apt-get güncellemesi
Şimdi aşağıdaki komutu kullanarak MongoDB'yi yükleyin.
sudo apt-get install -y mongodb-org
Kurulum başarılı olduktan sonra, aşağıdaki komutu kullanarak MongoDB'yi başlatın.
sudo systemctl start mongod
Aşağıdaki komutu kullanarak MongoDB'nin durumunu kontrol edin.
sudo systemctl status mongod
Şimdi aşağıda gösterilen komutu vererek mongod'un sistem yeniden başlatıldığında otomatik olarak başladığından emin olun.
sudo systemctl mongod'u etkinleştir
Şimdi mongo istemcisini kullanarak MongoDB sunucusuna bağlanıp bağlanamayacağınızı kontrol edin.
mongo
Mongo kabuğunda help ve show dbs komutlarını kullanmayı deneyin.
Bir Flask Uygulaması Oluşturun
Flask-appbuilder ve mongoengine'i yüklemek için aşağıdaki komutu kullanın.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Aşağıdaki kod parçasında yorum olarak gösterilen değerlerle bir iskelet uygulaması oluşturun.
flask fab create-app # Komut satırı soru formunda aşağıdaki değerleri verin # Application Name: flaskTutorialApp # EngineType : MongoEngine
Aşağıda verilene benzer bir çıktı göreceğiz.
Yeni uygulama adınız: exampleApp Motor türünüz, SQLAlchemy veya MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine İskelet uygulamasını indirdim, iyi kodlamalar!
Projenin ve uygulamanın düzenine bir göz atın. tree komutunun çıktısını aşağıda gösterdik.
Flask yapılandırma dosyasına bir göz atalım. Son komutun sonucu olarak oluşturulan varsayılan bir yapılandırmadır. Uncomment Cyborg teması, aşağıda gösterildiği gibi.
# Cybord=g için tema yapılandırması # Bu temalar static/appbuilder/css/themes üzerinde bulunur # Kendi temalarımızı oluşturabilir ve geçersiz kılmak için aynı dir yapısına yerleştirerek kolayca kullanabiliriz #APP_THEME = "bootstrap-theme.css" # varsayılan bootstrap #APP_THEME = "cerulean.css" # cerulean #APP_THEME = "amelia.css" # amelia teması #APP_THEME = "cosmo.css" # cosmo teması APP_THEME = "cyborg.css" # cyborgtema #APP_THEME = "flatly.css" # flatly teması
İskelet uygulamasını çalıştırmak için terminalde aşağıda verilen komutu kullanın.
şişe çalıştırma
Flask Merhaba Dünya
flaskTutorialApp'te ilk programınızı oluşturmak için app dizini altında views.py dosyasını açın ve aşağıdaki kodu ekleyin. Dosya içinde verilen import ifadelerini arayın. Henüz mevcut değilse bu ifadeleri ekleyin.
from flask_appbuilder import BaseView, expose from app import appbuilder class HelloWorld(BaseView): """ Öğreticinin bu ilk görünümü """ route_base = "/hello" @expose("/") def hello(self): return "Hello, World! from Software Testing Help" # dosyanın sonunda appbuilder.add_view_no_menu(HelloWorld())
Yukarıdaki kaynak kodu ekledikten sonra dosyayı kaydedin. Projenin kök dizinine gidin ve Flask'ın geliştirme sunucusunu çalıştırmak için aşağıdaki komutu kullanın.
şişe çalıştırma
Şimdi çıktıyı tarayıcıda görmek için //localhost:5000/hello/ adresine gidin.
Hata Ayıklama
Şu anda, geliştirme sunucusu Hata Ayıklama modunda çalışmamaktadır. Hata ayıklama modu olmadan, Flask Uygulamasının kaynak kodundaki hataları bulmak zordur.
Flask'ta Hata Ayıklama Modu aşağıdakilerle sonuçlanır:
- Hata ayıklama modu Otomatik yeniden yükleyiciyi etkinleştirir. Bu, uygulamanın kaynak kodunda değişiklik yaptıktan sonra geliştirme sunucusunu yeniden başlatmamız gerekmediği anlamına gelir.
- Hata ayıklama modu Python hata ayıklayıcısını etkinleştirir. Exception sırasında değişkenlerin değerlerini inceleyebiliriz.
- Hata ayıklama modu Flask uygulamasının hata ayıklamasını sağlar. Hata ayıklama oturumlarında çeşitli değişkenlerin değerlerini kontrol edebiliriz.
Geliştirme sunucusu zaten çalışıyorsa durdurun. Aynı işlemi yapmak için CTRL + C veya Klavye kesmesini kullanabilirsiniz.
Hata ayıklama modunu etkinleştirmek ve geliştirme sunucusunu geçici olarak çalıştırmak için aşağıdaki kodu kullanın.
FLASK_ENV=development flask run
Konsolda Hata Ayıklayıcı PIN kodunu arayın ve bir yere not edin.
Şimdi yukarıda yazılı HelloWorld görünümünü aşağıdaki kod parçacığı satırlarıyla değiştirelim. Özel bir istisna getirdiğimize dikkat edin.
@expose("/") def hello(self): raise Exception("DEBUG Modunu öğrenmek için özel bir istisna") return "Hello, World! from Software Testing Help"
//localhost:5000/hello/ adresine gidin ve uygulamanın bir istisna oluşturduğunu göreceksiniz. Tarayıcı, aşağıda gösterildiği gibi yığın izini görüntüler.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Ayrıca, geliştirme sunucusunun çalıştığı konsola bakın. Bu kez views.py dosyasındaki değişikliklerin otomatik olarak algılandığını ve hata ayıklama sunucusunun kendi kendine yeniden başlatıldığını göreceksiniz. Artık manuel olarak yeniden başlatmamıza gerek yok.
Konsolda aşağıda gösterildiği gibi satırlar olacaktır. Hata Ayıklama PIN kodunu daha sonra kullanmak üzere not etmemiz gerekir.
* '/work/sth/flaskTutorialApp/app/views.py' içinde değişiklik algılandı, yeniden yükleniyor 2020-06-02 14:59:49,354:INFO:werkzeug: * '/work/sth/flaskTutorialApp/app/views.py' içinde değişiklik algılandı, yeniden yükleniyor * Stat ile yeniden başlatılıyor 2020-06-02 14:59:49,592:INFO:werkzeug: * Stat ile yeniden başlatılıyor * Hata ayıklayıcı etkin! * Hata ayıklayıcı PIN: 150-849-897
Şimdi tarayıcıdaki yığın izini kontrol edin ve son satıra gidin. Görünümü genişletmek için üzerine tıklayın ve etkileşimli modda kabuğu açmak için CLI simgesine tıklayın.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Açtığınızda, tarayıcının Hata Ayıklama PIN'i için bir istem göstereceğini göreceksiniz. Hata Ayıklama PIN'ini verin ve Tamam'a tıklayın.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Debug PIN kodunu verdikten sonra ilerlediğimizde, etkileşimli kabuğa erişebiliriz.
Kabuğa tarayıcı içinden erişiriz ve İstisnanın nedenini bulmak ve hatayı daha iyi bir şekilde ele almak için değişkenlerin değerlerini inceleyebiliriz. Lütfen aşağıdaki resimde gösterilen örneklerden birine bakın.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Şimdi view.py dosyasındaki kodu aşağıda gösterildiği gibi değiştirin. İstisnanın oluştuğu satırı yorumladığımıza dikkat edin.
@expose("/") def hello(self): # raise Exception("DEBUG Modunu öğrenmek için özel bir istisna") return "Hello, World! from Software Testing Help"
Flask Uygulamasını Test Etme
Şimdi geliştirmekte olduğumuz Flask uygulaması için ilk testimizi yazalım. İlk olarak PyTest'i yükleyin. PyTest bir test çerçevesidir ve daha iyi kod yazmamıza yardımcı olur.
Dahası, uygulamalarımızı geliştirirken birim testleri yazabildiğimiz için TDD yaklaşımını takip etmek mümkündür. TDD, Test Odaklı Geliştirme anlamına gelir. Bu serinin sonraki eğitimlerinde, her zaman önce testleri yazacağız ve görünümlerimizi veya modellerimizi geliştireceğiz.
PyTest'i yükleyin
pip pytest'i yükleyin
Şimdi uygulama dizini içinde testler adında bir dizin oluşturun ve bunun içinde test_hello.py adında bir dosya oluşturun. Görünümümüzü test etmek için ilk birim testimizi yazalım.
Aşağıdaki kod parçasını kopyalayın ve test_hello.py dosyasına yapıştırın.
#!/usr/bin/env python from app import appbuilder import pytest @pytest.fixture def client(): """ Test istemcisi için bir pytest fikstürü """ appbuilder.app.config["TESTING"] = True with appbuilder.app.test_client() as client: yield client def test_hello(client): """ Merhaba görünümünü test etmek için bir test yöntemi """ resp = client.get("/hello", follow_redirects=True) assert 200 == resp.status_code
Testleri çalıştırmak için aşağıdaki pytest komutunu kullanın. PyTest Testleri otomatik olarak toplar ve sonuçları standart çıktıda görüntüler.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Bir GitHub İş Akışı Oluşturun
Örnek uygulamamız için bir CI/CD iş akışı oluşturmak için Git Actions kullanıyoruz. Projeniz için aşağıda belirtilen adımları izleyin.
Adım 1: GitHub'da depo sayfasına gidin. Git Eylemleri'ne tıklayın.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
Adım 2: Sayfayı aşağı kaydırın ve bir Python paketi için mevcut bir iş akışı şablonu bulun.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
Adım 3: Python paketi İş Akışını kurun.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Adım 4: python-package.yml iş akışı yapılandırması açıldıktan sonra, verilen yaml ek etiket değerlerine göre güncelleyin.
name: flaskTutorialApp jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: [3.7, 3.8] mongodb-version: [4.2] steps: - name: Start MongoDB uses: supercharge/[email protected] with: mongodb-version: ${{ matrix.mongodb-version }} # other values
Flask uygulamamızı en son Ubuntu Linux dağıtımında test etmek istiyoruz. İşletim sistemine ek olarak, testlerimizi yalnızca Python 3.7 ve Python 3.8 kullanarak çalıştırmak istiyoruz.
Adım 5: python-package.yml dosyasını güncellenmiş değerlerle commit edin.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
Adım 6: Önceki sayfadaki commit bizi GitActions işlerine götürür.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Adım 7: [İsteğe bağlı]
Örnek öğretici uygulama için Github Jobs sayfasında, bir rozet oluşturabilir ve derleme durumunu görüntülemek için README.md dosyasına yerleştirebiliriz.
Şimdi, değişiklikler ana dala işlendiğinde, python-package.yml'de yazıldığı gibi Git İş Akışı takip edilecek ve Git Eylemleri üzerinde çalıştırılacaktır.
Sonuç
Bu eğitimde, Python tabanlı bir web geliştirme çerçevesi olan Flask kullanılarak geliştirilen bir web uygulaması için ön koşullardan CI/CD iş akışının kurulumuna kadar tüm temel kavramları ele aldık.
Bu eğitim, Python kullanarak web geliştirmeye başlamak için Python'u yükleme, & Flask'ı indirme, Flask-Appbuilder ile çalışma, PyTest ile test etme gibi gerekli tüm adımları kapsar. Web geliştirme topluluğu genellikle Flask'ı Django adlı bir başka popüler Python web geliştirme çerçevesiyle karşılaştırır.
Bu farklılıkları açıklayacağız ve ayrıca bu serideki eğitimlerden birinde bu çerçeveleri karşılaştıracağız.