Ten wprowadzający samouczek Python Flask wyjaśnia, czym jest Flask, instalację Pythona, Virtualenv, przykład Flask Hello World z sekcją dotyczącą przykładów kodu, debugowania i testowania:
Tworzenie stron internetowych jest bardziej sztuką niż umiejętnością. Wymaga cierpliwości i staranności, a także wytrwałości, odwagi i poświęcenia, aby stworzyć to, co jest niezbędne do osiągnięcia prawdziwego sukcesu. W dzisiejszych czasach ważne jest, aby uczniowie jak najszybciej osiągnęli prędkość.
Stworzyliśmy ten samouczek Python Flask dla studentów, aby mogli przyspieszyć i wdrożyć zarówno proste, jak i złożone programowanie sieciowe przy użyciu Pythona 3.
Ten samouczek Python Flask jest raczej samouczkiem dla początkujących, który obejmuje instalację Pythona, Virtualenv i innych niezbędnych pakietów. W tej serii samouczków zainstalujemy również Flask wraz z innymi niezbędnymi wtyczkami Flask. Zawarliśmy również sekcję dotyczącą debugowania kodu, testowania i ciągłej integracji przy użyciu Git Actions.
Lista samouczków w tej serii Flask
Samouczek #1: Samouczek Python Flask - wprowadzenie do Flask dla początkujących
Samouczek #2: Szablon, formularz, widok i przekierowanie we Flasku z przykładami
Samouczek #3: Obsługa bazy danych we Flasku - Jak używać Flaska z bazą danych?
Samouczek #4: Aplikacja Flask i układ projektu Flask z Blueprint & Bootstrap
Samouczek #5: Wzorce projektowe Flask i najlepsze praktyki dla aplikacji internetowych
Samouczek #6: Samouczek Flask API z przykładami
Samouczek #7: Django Vs Flask Vs Node: Który framework wybrać?
Samouczek #8: 31 najpopularniejszych pytań z Python Flask Interview wraz z odpowiedziami
Co to jest Flask
Flask to framework do tworzenia stron internetowych. Jest to framework z wbudowanym serwerem programistycznym i debuggerem.
Framework Flask sam w sobie różni się od innych archetypów, ponieważ pozwala twórcom stron internetowych być elastycznym i wygodnie dostosowywać się do często wprowadzanych zmian w społeczności programistów.
Do czego służy Flask
Używamy frameworka Flask do tworzenia aplikacji internetowych w języku programowania Python. Integruje się on z innymi usługami i interfejsami API innych firm, aby wnieść bogactwo i znaczenie do opracowywanej aplikacji. Podstawowe koncepcje Flask są proste i zajmują niewiele miejsca.
Zacznijmy od tego samouczka Python Flask, aby zrozumieć tworzenie stron internetowych za pomocą repozytorium Flask GitHub. Zanim jednak przejdziesz dalej, sklonuj projekt z Github, aby łatwo śledzić omawiane przykłady kodu.
Wymagania wstępne
Oprócz wspomnianych nagłówków w tej sekcji zalecamy utworzenie konta Github. Przejdźmy do poniższych kroków w wymaganiach wstępnych.
Krok 1: Instalacja Pythona
Sprawdź, czy masz zainstalowany Python 3. Jeśli nie, pobierz Python 3 stąd i zainstaluj go zgodnie ze swoim systemem operacyjnym.
Krok 2: Utworzenie wirtualnego środowiska Python
Utwórz środowisko wirtualne za pomocą poniższego polecenia.
python3 -m venv venv
Użyj poniższego polecenia, aby aktywować wirtualne środowisko Python.
źródło venv/bin/activate
Poniżej podajemy przykład aktywacji i dezaktywacji środowiska wirtualnego.
Wszystkie kolejne polecenia w tym samouczku powinny być uruchamiane w aktywowanym środowisku wirtualnym. Zainstaluj pakiet wheel, abyśmy mogli budować koła w środowisku wirtualnym.
pip install wheel
Krok 3: Pobranie i instalacja Flask
Musimy wykonać kroki pobierania Flask i zainstalować Flask, korzystając z poniższych kroków.
Teraz zainstaluj Flask.
pip install flask
Niektórzy z nas lubią pracować z najnowszymi zmianami w kodzie źródłowym. Możemy użyć poniższego polecenia, aby zainstalować z najnowszymi zmianami w źródłach Flask.
Utwórz katalog tymczasowy.
mkdir tmp
Teraz zainstaluj Flask z repozytorium Github. Aby poniższe polecenie zadziałało, musisz pozostać podłączony do Internetu.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Spójrz na dane wyjściowe konsoli, aby sprawdzić pomyślną instalację. Teraz sprawdź, czy możemy uzyskać dostęp do poleceń Flask.
flask --help
Możesz zobaczyć kilka wyjątków dotyczących braku aplikacji Flask. Zignoruj je jednak, ponieważ nie stworzyliśmy żadnej aplikacji Flask. Nasza aplikacja jest instancją Flask, która jest opakowaniem frameworka Werkzeug i silnika szablonów Jinja.
Werkzeug
Werkzeug jest zestawem narzędzi WSGI. WSGI jest tylko konwencją wywoływania dla serwerów internetowych w celu przekazywania żądania internetowe do aplikacji internetowych napisanych w języku programowania Python.
Jinja
Szablonowanie jest niezbędną umiejętnością twórców stron internetowych. Jinja jest w pełni funkcjonalnym i popularnym silnikiem szablonów dla Pythona. Jest to dość ekspresyjny język i zapewnia solidny zestaw narzędzi dla twórców szablonów.
Krok 4: Instalacja MongoDB
Wykonaj poniższe kroki, aby zainstalować MongoDB. Przedstawiliśmy kroki instalacji w systemie Linux opartym na Debianie. Jeśli używasz innego systemu operacyjnego, przejdź do linku i zainstaluj zgodnie z zamierzonym systemem operacyjnym.
Zainstaluj gnupg do importowania publicznego klucza GPG MongoDB.
sudo apt-get install gnupg
Teraz zaimportuj klucz za pomocą poniższego polecenia.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc
Utwórz plik listy źródeł zgodnie z dystrybucją Linuksa. Dodaliśmy listę źródeł zgodnie z Debianem.
echo "deb //repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main"
Uruchom polecenie aktualizacji
sudo apt-get update
Teraz zainstaluj MongoDB, używając poniższego polecenia.
sudo apt-get install -y mongodb-org
Po pomyślnym zakończeniu instalacji uruchom MongoDB za pomocą poniższego polecenia.
sudo systemctl start mongod
Sprawdź status MongoDB, używając poniższego polecenia.
sudo systemctl status mongod
Teraz upewnij się, że mongod automatycznie uruchamia się po ponownym uruchomieniu systemu, wydając poniższe polecenie.
sudo systemctl enable mongod
Teraz sprawdź, czy możesz połączyć się z serwerem MongoDB za pomocą klienta mongo.
mongo
W powłoce mongo spróbuj użyć poleceń help i show dbs.
Tworzenie aplikacji Flask
Użyj poniższego polecenia, aby zainstalować flask-appbuilder i mongoengine.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Utwórz aplikację szkieletową z wartościami przedstawionymi jako komentarze w poniższym fragmencie kodu.
flask fab create-app # Podaj następujące wartości w kwestionariuszu wiersza poleceń # Nazwa aplikacji: flaskTutorialApp # Typ silnika: MongoEngine
Zobaczymy wynik podobny do podanego poniżej.
Nazwa nowej aplikacji: exampleApp Typ silnika: SQLAlchemy lub MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Pobrano aplikację szkieletową, dobre kodowanie!
Spójrz na układ projektu i aplikacji. Poniżej przedstawiamy wynik polecenia tree.
Przyjrzyjmy się plikowi konfiguracyjnemu Flask'a. Jest to domyślna konfiguracja wygenerowana w wyniku ostatniego polecenia. Usuń komentarz Cyborg jak pokazano poniżej.
# Konfiguracja motywów dla Cybord=g # te motywy znajdują się na static/appbuilder/css/themes # możemy tworzyć własne i łatwo z nich korzystać, umieszczając je w tej samej strukturze dir do nadpisania #APP_THEME = "bootstrap-theme.css" # domyślny bootstrap #APP_THEME = "cerulean.css" # cerulean #APP_THEME = "amelia.css" # motyw amelia #APP_THEME = "cosmo.css" # motyw cosmo APP_THEME = "cyborg.css" # cyborgtheme #APP_THEME = "flatly.css" # flatly theme
Aby uruchomić aplikację szkieletową, użyj poniższego polecenia w terminalu.
uruchomienie kolby
Flask Hello World
Aby utworzyć pierwszy program w aplikacji flaskTutorialApp, otwórz plik views.py w katalogu aplikacji i dodaj następujący kod. Poszukaj instrukcji importu podanych w pliku. Dodaj te instrukcje, jeśli jeszcze ich nie ma.
from flask_appbuilder import BaseView, expose from app import appbuilder class HelloWorld(BaseView): """ Ten pierwszy widok samouczka """ route_base = "/hello" @expose("/") def hello(self): return "Hello, World! from Software Testing Help" # na końcu pliku appbuilder.add_view_no_menu(HelloWorld())
Zapisz plik po dodaniu powyższego kodu źródłowego. Przejdź do katalogu głównego projektu i użyj poniższego polecenia, aby uruchomić serwer deweloperski Flask.
uruchomienie kolby
Teraz przejdź do //localhost:5000/hello/, aby zobaczyć wynik w przeglądarce.
Debugowanie
Obecnie serwer deweloperski nie działa w trybie debugowania. Bez trybu debugowania trudno jest znaleźć błędy w kodzie źródłowym aplikacji Flask.
Tryb debugowania we Flask daje następujące wyniki:
- Tryb debugowania aktywuje automatyczny reloader. Oznacza to, że nie musimy ponownie uruchamiać serwera deweloperskiego po wprowadzeniu zmian w kodzie źródłowym aplikacji.
- Tryb debugowania aktywuje debugger Pythona. Możemy sprawdzać wartości zmiennych podczas wykonywania wyjątku.
- Tryb debugowania umożliwia debugowanie aplikacji Flask. Możemy sprawdzać wartości różnych zmiennych w sesjach debugowania.
Zatrzymaj serwer deweloperski, jeśli jest już uruchomiony. Możesz użyć CTRL + C lub przerwania klawiatury, aby zrobić to samo.
Użyj poniższego kodu, aby włączyć tryb debugowania i tymczasowo uruchomić serwer deweloperski.
FLASK_ENV=development flask run
Wyszukaj w konsoli kod PIN debuggera i zanotuj go.
Teraz zmieńmy powyższy widok HelloWorld za pomocą następujących linii fragmentu kodu. Zauważ, że wprowadziliśmy niestandardowy wyjątek.
@expose("/") def hello(self): raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Przejdź do //localhost:5000/hello/, a zobaczysz, że aplikacja zgłosiła wyjątek. Przeglądarka wyświetli ślad stosu, jak pokazano poniżej.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Co więcej, spójrz na konsolę, w której uruchomiony jest serwer deweloperski. Przekonasz się, że tym razem zmiany w views.py są automatycznie wykrywane, a serwer debugowania uruchamia się ponownie sam. Teraz nie musimy go ręcznie restartować.
W konsoli pojawią się linie, jak pokazano poniżej. Musimy zanotować kod Debug PIN na później.
* Wykryto zmianę w '/work/sth/flaskTutorialApp/app/views.py', przeładowanie 2020-06-02 14:59:49,354:INFO:werkzeug: * Wykryto zmianę w '/work/sth/flaskTutorialApp/app/views.py', przeładowanie * Restartowanie ze stat 2020-06-02 14:59:49,592:INFO:werkzeug: * Restartowanie ze stat * Debugger jest aktywny! * PIN debuggera: 150-849-897
Teraz sprawdź ślad stosu w przeglądarce i przejdź do ostatniego wiersza. Kliknij go, aby rozwinąć jego widok i kliknij ikonę CLI, aby otworzyć powłokę w trybie interaktywnym.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Po jej otwarciu zobaczysz, że przeglądarka wyświetli monit o podanie kodu Debug PIN. Podaj kod Debug PIN i kliknij OK.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Gdy przejdziemy dalej po podaniu kodu Debug PIN, możemy uzyskać dostęp do interaktywnej powłoki.
Uzyskujemy dostęp do powłoki z poziomu przeglądarki i możemy sprawdzić wartości zmiennych, aby znaleźć przyczynę wyjątku i obsłużyć błąd w lepszy sposób. Spójrz na jeden z przykładów pokazanych na poniższym obrazku.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Teraz zmień kod w view.py, jak pokazano poniżej. Zwróć uwagę, że zakomentowaliśmy linię, w której wystąpił wyjątek.
@expose("/") def hello(self): # raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Testowanie aplikacji Flask
Teraz napiszmy nasz pierwszy test dla aplikacji Flask, którą tworzymy. Najpierw zainstaluj PyTest. PyTest to framework do testowania, który pomaga nam pisać lepszy kod.
Co więcej, tylko dlatego, że możemy pisać testy jednostkowe podczas tworzenia naszych aplikacji, możliwe jest stosowanie podejścia TDD. TDD oznacza Test-Driven Development. W naszych kolejnych tutorialach z tej serii zawsze będziemy najpierw pisać testy, a następnie rozwijać nasze widoki lub modele.
Zainstaluj PyTest
pip install pytest
Teraz utwórz katalog o nazwie tests wewnątrz katalogu aplikacji i utwórz w nim plik o nazwie test_hello.py. Napiszmy nasz pierwszy test jednostkowy, aby przetestować nasz widok.
Skopiuj poniższy fragment kodu i wklej go do pliku test_hello.py.
#!/usr/bin/env python from app import appbuilder import pytest @pytest.fixture def client(): """ A pytest fixture for test client """ appbuilder.app.config["TESTING"] = True with appbuilder.app.test_client() as client: yield client def test_hello(client): """ A test method to test view hello """ resp = client.get("/hello", follow_redirects=True) assert 200 == resp.status_code
Użyj poniższego polecenia pytest, aby uruchomić testy. PyTest automatycznie zbiera testy i wyświetla wyniki na standardowym wyjściu.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Tworzenie przepływu pracy GitHub
Używamy Git Actions, aby utworzyć przepływ pracy CI/CD dla naszej przykładowej aplikacji. Wykonaj poniższe kroki dla swojego projektu.
Krok 1: Przejdź do strony repozytorium w serwisie GitHub i kliknij przycisk Git Actions.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
Krok 2: Przewiń stronę w dół i znajdź istniejący szablon przepływu pracy dla pakietu Python.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
Krok 3: Konfiguracja pakietu Python Workflow.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Krok 4: Po otwarciu konfiguracji przepływu pracy python-package.yml, zaktualizuj ją w oparciu o podane wartości dodatkowych znaczników yaml.
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
Chcemy przetestować naszą aplikację Flask na najnowszej dystrybucji Ubuntu Linux. Oprócz systemu operacyjnego, chcemy uruchomić nasze testy tylko przy użyciu Pythona 3.7 i Pythona 3.8.
Krok 5: Zatwierdź python-package.yml ze zaktualizowanymi wartościami.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
Krok 6: Zatwierdzenie na poprzedniej stronie przenosi nas do zadań GitActions.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Krok 7: [Opcjonalnie]
Na stronie Github Jobs dla przykładowej aplikacji samouczka możemy utworzyć plakietkę i umieścić ją w pliku README.md w celu wyświetlenia stanu kompilacji.
Teraz za każdym razem, gdy zmiany zostaną zatwierdzone do gałęzi głównej, Git Workflow, jak napisano w python-package.yml, będzie śledzony i uruchamiany w Git Actions.
Wnioski
W tym samouczku omówiliśmy wszystkie podstawowe koncepcje, od wymagań wstępnych po konfigurację przepływu pracy CI / CD dla aplikacji internetowej opracowanej przy użyciu Flask - frameworka do tworzenia stron internetowych opartego na Pythonie.
Ten samouczek obejmuje wszystkie niezbędne kroki, takie jak instalacja Pythona, pobieranie & instalacja Flask, praca z Flask-Appbuilder, testowanie za pomocą PyTest itp. aby rozpocząć tworzenie stron internetowych w Pythonie. Społeczność programistów internetowych zwykle porównuje Flask z innym popularnym frameworkiem Pythona do tworzenia stron internetowych o nazwie Django.
Wyjaśnimy te różnice, a także porównamy te frameworki w jednym z samouczków z tej serii.