Python Flask er et minimalistisk rammeverk designet for å skape webapplikasjoner ved hjelp av programmeringsspråket Python.
Dette rammeverket utmerker seg med sin fleksibilitet og tilpasningsevne, noe som gjør det lett å lære. Det er derfor et populært valg for utviklere som skal bygge webservere. I denne artikkelen vil vi utforske Python Flask: hva det er, hvordan det står i forhold til andre rammeverk, og hvordan du setter opp en enkel applikasjon med Python.
Hva er Flask?
Flask er et rammeverk som gir deg verktøyene du trenger for å utvikle webservere i Python. I motsetning til enkelte andre rammeverk, pålegger det ikke utvikleren en bestemt struktur for mappene.
I tillegg er det minimalistisk, noe som gir deg friheten til å velge de verktøyene du selv ønsker for oppgaver som å koble til en database eller validere data fra skjemaer.
Flask brukes, som nevnt, til å lage webservere. En webserver er programvare som svarer på HTTP-forespørsler med den relevante informasjonen og filene.
Flask kontra andre rammeverk
I denne delen skal vi se på hvordan Flask stiller seg i forhold til to andre populære rammeverk, nemlig Django og FastAPI. Vi skal se nærmere på fordelene og ulempene ved å velge Flask fremfor disse andre alternativene.
Flask kontra Django
Flask er et lettvekts mikrorammeverk. Det tilbyr utviklere enkelhet og fleksibilitet, slik at du kan bygge applikasjonen i takt med dine behov. Dette innebærer imidlertid at du selv må ta ansvar for mange av oppgavene.
Django, derimot, er et rammeverk som leveres med «alt inkludert», og tilbyr mange ferdigkonfigurerte verktøy. Dette gjør det mulig å utvikle og lansere applikasjoner raskere. Django er imidlertid mindre fleksibelt og har en noe brattere læringskurve.
Som en konsekvens av dette, benyttes Flask gjerne til mindre og mellomstore prosjekter, mens Django ofte velges for større og mer komplekse applikasjoner.
Les også: Forskjeller mellom Flask og Django
Flask kontra FastAPI
FastAPI er et relativt nytt rammeverk for å lage API-er i Python. Det er raskt og enkelt å bruke, og har innebygd overvåkingsfunksjonalitet. Ulempen er at det er et ungt rammeverk med et begrenset økosystem og et mindre fellesskap. I tillegg er bruken hovedsakelig begrenset til API-er.
Flask er mer allsidig ettersom det kan brukes til både API-er og rendering av statiske filer. Det er lett og relativt enkelt å bruke. Det er imidlertid ikke like raskt som FastAPI.
Flask er best egnet for webapplikasjoner der du må rendre HTML, mens FastAPI er et bedre valg for å bygge API-er.
Les også: FastAPI vs. Flask: Hvilken av de to passer for deg?
Hvordan lage en applikasjon i Flask
I denne delen skal vi lage en enkel Flask-app for å vise HTML og presentere data via et API. Målet er ikke å gi en fullstendig opplæring i Flask, men heller å illustrere hvordan en enkel Flask-applikasjon kan settes opp.
Forutsetninger
For å kunne følge denne veiledningen, bør du ha en grunnleggende forståelse av Python 3. I tillegg vil kjennskap til HTTP være en fordel, men det er ikke absolutt nødvendig.
For å lage en applikasjon i Flask, må du først ha installert Python. Hvis du trenger hjelp med dette, kan du se denne videoen:
Lag et virtuelt miljø
Start med å opprette en prosjektmappe for applikasjonen. Jeg bruker Bash Terminal, og oppretter derfor en mappe med følgende kommando:
mkdir flask-tut
Deretter navigerer du inn i mappen ved hjelp av kommandoen:
cd flask-tut
Når du er inne i mappen, oppretter du et virtuelt miljø ved hjelp av denne kommandoen. Dette sikrer at avhengighetene vi installerer ikke kommer i konflikt med avhengighetene til andre prosjekter.
python3 -m venv venv
Dette vil opprette en mappe kalt venv, som du kan bekrefte med kommandoen:
ls
Aktiver det virtuelle miljøet
Det er enkelt å aktivere et virtuelt miljø. I Bash-terminalen skriver du inn kommandoen:
source venv/bin/activate
Prompten i terminalen din vil nå endres fra $ til (venv) $.
For mer informasjon, her er en artikkel om virtuelle miljøer i Python.
Installer Flask
Nå som vi har et virtuelt miljø, kan vi installere Flask. Dette gjør vi ved hjelp av pip:
pip install Flask
Dette vil laste ned noen filer og installere de nødvendige avhengighetene.
Viser HTML
Nå kan vi begynne å jobbe med filen main.py. Denne filen vil være utgangspunktet for applikasjonen vår.
touch main.py
Etter at main.py er opprettet, åpner du den i din foretrukne editor og legger til følgende kode:
from flask import Flask app = Flask(__name__) @app.route("/") def index(): return '<h1>Hei fra Flask!</h1>'
I kodesnutten over begynner vi med å importere Flask-klassen. Deretter oppretter vi en instans av Flask-klassen og sender inn variabelen __name__. Dette er en innebygd variabel som lagrer navnet på den gjeldende modulen. Flask trenger denne informasjonen for å vite hvor den skal finne filene. Vi lagrer instansen av Flask i app-variabelen.
Deretter definerer vi en funksjon som heter index. Denne funksjonen returnerer HTML-koden vi ønsker å vise til brukeren. Før funksjonsdefinisjonen bruker vi @app.route-dekoratoren. Denne dekoratoren konverterer en vanlig funksjon til en Flask-visningsfunksjon. Dette betyr at returverdien til funksjonen vil bli konvertert til et HTML-svar.
For å kjøre applikasjonen bruker vi kommandoen:
flask --app main run
–app-flagget spesifiserer hvor applikasjonen befinner seg, som i dette tilfellet er i main.py. Serveren skal nå starte.
Hvis du åpner nettleseren din på http://localhost:5000 eller http://127.0.0.1:5000, vil du se en h1-overskrift:
Generelt sett vil det være uhensiktsmessig å skrive all HTML-koden direkte i Python-koden. Ideelt sett ønsker vi å skille Python-logikken fra HTML-strukturen. Den neste delen vil vise hvordan du kan vise frittstående HTML-filer.
Viser en HTML-fil
I denne delen skal vi skrive koden for å vise en index.html-fil for nettsiden vår. La oss først lage filen index.html. Vi skal lage denne filen i mappen templates, fordi det er her Flask ser etter HTML-maler.
touch template/index.html
Deretter åpner du filen i din foretrukne editor og legger til følgende kode:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Flask Website</title> </head> <body> <h1>Hei fra Flask!</h1> </body> </html>
Deretter åpner du filen main.py som vi opprettet tidligere. Legg deretter til følgende import øverst, rett etter Flask-importen:
from flask import render_template
Funksjonen render_template som vi nettopp importerte, lar oss vise HTML-maler. For å vise en HTML-fil, endrer vi funksjonen index slik at den ser slik ut:
@app.route("/") def index(): return render_template('index.html')
Stopp serveren (Ctrl + C) og start den på nytt med følgende kommando:
flask --app main run
Når du laster inn nettsiden på nytt, skal du se følgende:
I dette eksemplet viser vi en statisk HTML-side. Med Flask kan du også vise dynamisk innhold ved å lage HTML-maler og levere data til dem. Disse malene følger Jinja-syntaksen. Vi skal ikke gå inn på dette her, men jeg vil legge til lenker til gode ressurser for å lære mer om Flask senere.
Oppretter en API-rute
Å vise HTML-innhold er en viktig funksjon for webapplikasjoner. En annen viktig funksjon er å vise data gjennom en API-rute. I Flask er det også enkelt å sette opp API-ruter. Legg til denne koden i main.py-filen for å opprette en API-rute på «/data».
@app.route('/data') def data(): return { "status": "OK", "msg": "Hei fra Flask API" }
Hvis en funksjon returnerer et dictionary (ordbok) eller en liste, vil verdien automatisk konverteres til JSON og sendes som svar. Hvis du starter serveren på nytt og åpner http://localhost:5000/data, skal du se følgende:
Ressurser for å lære Flask
❇️ Den offisielle Flask-dokumentasjonen er en utmerket ressurs for læring. Den er godt strukturert, oversiktlig og sannsynligvis den mest pålitelige kilden for å lære Flask.
❇️ freeCodeCamp har også en flott YouTube-video om Flask. freeCodeCamp er kjent for å tilby gratis læringsressurser av høy kvalitet.
❇️ Dette Udemy-kurset er en god måte å lære hvordan man bygger API-er i bedriftsklassen med Flask. Det dekker verktøy som Flask-SQLAlchemy og Flask-Smorest.
Konklusjon
Denne artikkelen har gitt en kort introduksjon til Python Flask. Vi har forklart hva det er, sammenlignet det med andre webrammeverk og bygget en enkel applikasjon. Til slutt har vi gitt lenker til ressurser for videre læring.
Neste steg kan være å se på hvordan du sikrer et Flask REST API med et JSON-netttoken.