Denne indledende Python Flask tutorial forklarer, hvad Flask er, installation af Python, Virtualenv, Flask Hello World eksempel med et afsnit om kodeeksempler, fejlfinding og testning:
Udvikling af websites er mere en kunst end en færdighed. Det kræver tålmodighed og flid samt udholdenhed, mod og dedikation for at skabe det, der er nødvendigt for at få succes. I dag er det vigtigt for eleverne at komme i gang så hurtigt som muligt.
Vi har lavet denne Python Flask-tutorial for studerende, så de kan komme i gang og implementere enkel såvel som kompleks webprogrammering ved hjælp af Python 3.
Denne Python Flask tutorial er mere som en flask begynder tutorial, som vil dække installationen af Python, Virtualenv og andre vigtige pakker. I denne serie af tutorials vil vi også installere Flask sammen med de andre nødvendige Flask plugins. Vi har også inkluderet et afsnit om debugging af kode, test og kontinuerlig integration ved hjælp af Git Actions.
Liste over vejledninger i denne Flask-serie
Vejledning #1: Python Flask Tutorial - Introduktion til Flask for begyndere
Vejledning nr. 2: Flask-skabelon, formular, visning og omdirigering med eksempler
Tutorial #3: Håndtering af Flask-databaser - Sådan bruger du Flask med en database
Tutorial #4: Flask-app og Flask-projektlayout med Blueprint & Bootstrap
Vejledning nr. 5: Designmønstre og bedste praksis for webapplikationer i Flask
Vejledning nr. 6: Flask API Tutorial med eksempel
Vejledning nr. 7: Django Vs Flask Vs Node: Hvilken ramme skal du vælge?
Vejledning nr. 8: Top 31 populære Python Flask-interviewspørgsmål med svar
Hvad er Flask
Flask er en ramme for webudvikling. Det er en ramme med en indbygget udviklingsserver og en debugger.
Flask-rammen i sig selv adskiller sig fra de andre arketyper, da den giver webudviklere mulighed for at være fleksible og tilpasse sig de hyppigt udgivne ændringer i softwareudviklingsmiljøet.
Hvad bruges flasken til
Vi bruger Flask-rammen til at udvikle webapplikationer i programmeringssproget Python. Den integrerer med andre tredjepartstjenester og API'er for at give rigdom og mening til den applikation, der er under udvikling. Flasks kernekoncepter er enkle, og den har et lille fodaftryk.
Lad os starte med denne Python Flask-tutorial for at forstå webudvikling ved hjælp af et GitHub-repositorium for Flask. Før du fortsætter, skal du dog klone projektet fra Github for at gøre det nemt at følge op på de diskuterede kodeeksempler.
Forudsætninger
Ud over de nævnte overskrifter i dette afsnit anbefaler vi, at du opretter en Github-konto. Lad os fortsætte med de nedenfor nævnte trin i forudsætningerne.
Trin 1: Installer Python
Kontroller, om du har installeret Python 3 eller ej. Hvis ikke, skal du downloade Python 3 herfra og installere det i overensstemmelse med dit styresystem.
Trin 2: Opret et virtuelt Python-miljø
Opret et virtuelt miljø ved hjælp af nedenstående kommando.
python3 -m venv venv venv
Brug nedenstående kommando til at aktivere det virtuelle Python-miljø.
kildekode venv/bin/activate
Vi har givet et eksempel på aktivering og deaktivering af det virtuelle miljø nedenfor.
Alle de efterfølgende kommandoer i denne vejledning skal køre i et aktiveret virtuelt miljø. Installer wheel-pakken, så vi kan bygge hjul i det virtuelle miljø.
pip install wheel
Trin 3: Download og indsættelse af Flask
Vi skal udføre trinene til download af Flask og installere Flask ved hjælp af nedenstående trin.
Installer nu Flask.
pip install flask
Nogle af os kan lide at arbejde sammen med de seneste ændringer i kildekoden. Vi kan bruge nedenstående kommando til at installere med de seneste ændringer i Flask-kilderne.
Opret en midlertidig mappe.
mkdir tmp
Installer nu Flask fra Github-repositoriet. Du skal have forbindelse til internettet for at nedenstående kommando virker.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Se på konsolens output for at kontrollere, at installationen er lykkedes. Kontroller nu, om vi kan få adgang til Flask-kommandoer.
flask --help
Du vil måske se nogle undtagelser om fraværet af en Flask-applikation, men du skal ikke tage hensyn til dem, da vi ikke har oprettet nogen Flask-app. Vores app er en instans af Flask, som er en wrapper på Werkzeug webframework og Jinja templating engine.
Værktøj
Werkzeug er et WSGI-værktøjssæt. WSGI er kun en opkaldskonvention for webservere til at videresende webanmodninger til webapplikationer skrevet i programmeringssproget Python.
Jinja
Templating er en vigtig færdighed for webudviklere. Jinja er en fuldt udstyret og populær templating-motor til Python. Det er et ganske udtryksfuldt sprog og giver et robust sæt værktøjer til skabelonforfattere.
Trin 4: Installer MongoDB
Følg nedenstående trin for at installere MongoDB. Vi har beskrevet trinene til installation af MongoDB i en Debian-baseret Linux. Hvis du bruger et andet operativsystem, skal du gå til linket og installere det i overensstemmelse med det ønskede operativsystem.
Installer gnupg til import af MongoDB's offentlige GPG-nøgle.
sudo apt-get install gnupg
Importer nu nøglen ved hjælp af nedenstående kommando.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc
Opret filen med kildelisten i overensstemmelse med din Linux-distribution. Vi har tilføjet listen over kilder i Debian.
echo "deb //repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main"
Kør opdateringskommandoen
sudo apt-get update
Installer nu MongoDB ved hjælp af nedenstående kommando.
sudo apt-get install -y mongodb-org
Når installationen er gennemført, skal du starte MongoDB ved hjælp af nedenstående kommando.
sudo systemctl start mongod
Kontroller MongoDB's status ved hjælp af nedenstående kommando.
sudo systemctl status mongod
Sørg nu for, at mongod automatisk starter ved genstart af systemet ved at bruge den nedenfor viste kommando.
sudo systemctl enable mongod
Kontroller nu, om du kan oprette forbindelse til MongoDB-serveren ved hjælp af mongo client.
mongo
Prøv at bruge kommandoerne help og show dbs i mongo shell.
Opret en Flask-app
Brug nedenstående kommando til at installere flask-appbuilder og mongoengine.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Opret en skelet-app med de værdier, der er vist som kommentarer i nedenstående kodestump.
flask fab create-app # Angiv følgende værdier i spørgeskemaet på kommandolinjen # Programnavn: flaskTutorialApp # EngineType : MongoEngine
Vi vil se et output, der ligner det nedenfor.
Dit nye app-navn: exampleApp Din motortype, SQLAlchemy eller MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Hentede skelet-appen, god kodning!
Se på layoutet af projektet og appen. Vi har vist resultatet af kommandoen tree nedenfor.
Lad os kigge på Flask-konfigurationsfilen. Det er en standardkonfiguration, der er genereret som resultatet af den sidste kommando. Fjern kommentaren Cyborg tema, som vist nedenfor.
# Tema konfiguration for Cybord=g # disse temaer er placeret på static/appbuilder/css/themes # Vi kan oprette vores egne og nemt bruge dem ved at placere dem i samme dir struktur for at tilsidesætte dem #APP_THEME = "bootstrap-theme.css" # standard bootstrap #APP_THEME = "cerulean.css" # cerulean #APP_THEME = "amelia.css" # amelia tema #APP_THEME = "cosmo.css" # cosmo tema APP_THEME = "cyborg.css" # cyborgtema #APP_THEME = "flatly.css" # flatly-tema
For at køre skelet-appen skal du bruge nedenstående kommando i terminalen.
kolbe køre
Flask Hello World
For at oprette dit første program i flaskTutorialApp skal du åbne filen views.py i app-mappen og tilføje følgende kode. Se efter import-angivelser i filen. Tilføj disse angivelser, hvis de ikke allerede er til stede.
from flask_appbuilder import BaseView, expose from app import appbuilder class HelloWorld(BaseView): """ Denne første visning af tutorialen """ route_base = "/hello" @expose("/") def hello(self): return "Hello, World! from Software Testing Help" # i slutningen af filen appbuilder.add_view_no_menu(HelloWorld())
Gem filen efter at have tilføjet ovenstående kildekode. Gå til projektets rodmappe, og brug nedenstående kommando til at køre Flasks udviklingsserver.
kolbe køre
Naviger nu til //localhost:5000/hello/ for at se resultatet i browseren.
Fejlfinding
I øjeblikket kører udviklingsserveren ikke i debug-tilstand. Uden debugging-tilstand er det svært at finde fejlene i Flask-applikationens kildekode.
Debug Mode i Flask resulterer i følgende:
- Debug-tilstand aktiverer automatisk genindlæsning. Det betyder, at vi ikke behøver at genstarte udviklingsserveren, når vi foretager ændringer i applikationens kildekode.
- Debug-tilstand aktiverer Python-debuggeren. Vi kan inspicere værdierne af variabler under Exceptionen.
- Debug-tilstand aktiverer debugging af Flask-applikationen. Vi kan kontrollere værdierne for forskellige variabler i debugging-sessioner.
Stop udviklingsserveren, hvis den allerede kører. Du kan bruge CTRL + C eller Keyboard interrupt til at gøre det samme.
Brug følgende kode til at aktivere fejlfindingstilstand og køre udviklingsserveren midlertidigt.
FLASK_ENV=development flask run
Søg i konsollen efter Debugger PIN-kode og noter den.
Lad os nu ændre den ovenfor skrevne HelloWorld-visning med de følgende linjer i kodestumpen. Bemærk, at vi har indført en brugerdefineret undtagelse.
@expose("/") def hello(self): raise Exception("En brugerdefineret undtagelse for at lære DEBUG Mode") return "Hello, World! from Software Testing Help"
Naviger til //localhost:5000/hello/, og du vil se, at programmet har udløst en undtagelse. Browseren viser staksporet, som vist nedenfor.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Se desuden på konsollen, hvor udviklingsserveren kører. Du vil se, at denne gang registreres ændringerne i views.py automatisk, og debugserveren genstarter af sig selv. Nu behøver vi ikke genstarte den manuelt.
Konsollen vil have linjer som vist nedenfor. Vi skal notere Debug PIN-koden til senere.
* Detekteret ændring i '/work/sth/flaskTutorialApp/app/views.py', genindlæses 2020-06-02 14:59:49,354:INFO:werkzeug: * Detekteret ændring i '/work/sth/flaskTutorialApp/app/views.py', genindlæses * Genstartes med stat 2020-06-02 14:59:49,592:INFO:werkzeug: * Genstartes med stat * Debugger er aktiv! * Debugger PIN: 150-849-897
Se nu staksporet i browseren, og gå til den sidste linje. Klik på den for at udvide visningen, og klik på CLI-ikonet for at åbne shell'en i interaktiv tilstand.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Når du åbner den, vil du se, at browseren viser en anmodning om Debug PIN-kode. Indtast Debug PIN-koden, og klik på OK.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Når vi går videre efter at have givet Debug PIN-koden, kan vi få adgang til den interaktive shell.
Vi får adgang til shell'en fra browseren og kan inspicere værdierne af variabler for at finde årsagen til undtagelsen og håndtere fejlen på en bedre måde. Se venligst et af eksemplerne i billedet nedenfor.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Ændr nu koden i view.py, som vist nedenfor. Bemærk, at vi har kommenteret den linje, der gav anledning til undtagelsen.
@expose("/") def hello(self): # raise Exception("En brugerdefineret undtagelse for at lære DEBUG Mode") return "Hello, World! from Software Testing Help"
Test af Flask-applikationen
Lad os nu skrive vores første test til den Flask-applikation, som vi er ved at udvikle. Installer først PyTest. PyTest er en testramme, som hjælper os med at skrive bedre kode.
Bare fordi vi kan skrive unit tests, mens vi udvikler vores applikationer, er det desuden muligt at følge TDD-tilgangen. TDD står for Test-Driven Development. I vores efterfølgende tutorials i denne serie vil vi altid skrive tests først og derefter udvikle vores views eller modeller.
Installer PyTest
pip install pytest
Opret nu en mappe kaldet tests i app-mappen og opret en fil kaldet test_hello.py. Lad os skrive vores første enhedstest for at teste vores visning.
Kopier følgende kodestykke, og indsæt det i test_hello.py.
#!/usr/bin/env python from app import appbuilder import pytest @pytest.fixture def client(): """ En pytest fixture til testklient """ appbuilder.app.config["TESTING"] = True with appbuilder.app.app.test_client() as client: yield client def test_hello(client): """ En testmetode til at teste visningen hello """ resp = client.get("/hello", follow_redirects=True) assert 200 == resp.status_code
Brug nedenstående pytest-kommando til at køre testene. PyTest indsamler automatisk testene og viser resultaterne på standardudgangen.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Opret en GitHub-arbejdsgang
Vi bruger Git Actions til at oprette en CI/CD-arbejdsgang for vores eksempelprogram. Følg nedenstående trin for dit projekt.
Trin 1: Naviger til repository-siden på GitHub. Klik på Git Actions.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
Trin 2: Rul ned på siden, og find en eksisterende arbejdsgangsskabelon for en Python-pakke.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
Trin 3: Opsætning af Python-pakken Workflow.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Trin 4: Når konfigurationen af arbejdsgangen python-package.yml åbnes, skal du opdatere den baseret på de angivne værdier for yderligere yaml-tags.
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
Vi ønsker at teste vores Flask-applikation på den nyeste Ubuntu Linux-distribution. Ud over operativsystemet ønsker vi kun at køre vores test med Python 3.7 og Python 3.8.
Trin 5: Indberet python-package.yml med de opdaterede værdier.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
Trin 6: Indlæsningen på den foregående side fører os til GitActions-jobbene.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Trin 7: [Valgfrit]
På Github Jobs-siden for eksemplet af tutorial-appen kan vi oprette et badge og placere det på README.md-filen for at vise build-status.
Nu vil Git Workflow, som skrevet i python-package.yml, blive fulgt og kørt på Git Actions, hver gang ændringerne er overført til mastergrenen.
Konklusion
I denne tutorial har vi dækket alle de grundlæggende koncepter fra forudsætninger til opsætning af CI/CD-arbejdsgange for en webapplikation udviklet ved hjælp af Flask - en Python-baseret webudviklingsramme.
Denne vejledning dækker alle nødvendige trin såsom installation af Python, downloading & installation af Flask, arbejde med Flask-Appbuilder, testning med PyTest osv. for at komme i gang med webudvikling med Python. Webudviklingsmiljøet sammenligner normalt Flask med en anden populær Python-webudviklingsramme kaldet Django.
Vi vil forklare disse forskelle og sammenligne disse rammer i en af tutorials i denne serie.