Pythonkolv förklaras på 5 minuter eller mindre

Python Flask är ett mikroramverk för att bygga webbapplikationer i Python.

Det är ett mycket flexibelt och anpassningsbart ramverk som gör det enkelt att lära sig. Som ett resultat är det ett populärt val när man bygger webbservrar. Den här artikeln introducerar Python Flask: vad det är, hur det jämförs med andra ramverk och hur man skapar en grundläggande applikation i Python.

Vad är Flask?

Flaska är ett ramverk för att bygga webbservrar i Python. Till skillnad från andra ramverk tvingar det inte utvecklaren att anpassa sig till en viss katalogstruktur.

Dessutom är det ointressant, vilket gör att du kan använda vilka verktyg du föredrar för att utföra åtgärder som att ansluta till en databas och validera formulärinmatningar.

Som nämnts används Flask för att bygga webbservrar. En webbserver är programvara som svarar på HTTP-förfrågningar med lämpliga data och filer.

Flask vs. Andra ramar

Det här avsnittet kommer kort att jämföra Flask med två andra populära ramverk – Django och Fast API. Vi kommer att täcka fördelarna och begränsningarna med att använda Flask framför andra ramverk.

Flask vs. Django

Flask är en lätt mikroram. Det erbjuder utvecklare enkelhet och flexibilitet, så att du kan bygga allt eftersom. Detta innebär dock att du måste göra mycket arbete själv.

Å andra sidan är Django ett ”batterier-inkluderat” ramverk som kommer med många förkonfigurerade verktyg. Detta gör att du kan bygga och skicka snabbare. Django är dock inte särskilt flexibel och har en brantare inlärningskurva.

Som ett resultat av detta används Flask för små och medelstora projekt, medan Django används för större och mer komplexa projekt.

Läs också: Skillnader mellan Flask och Django

Flask vs. FastAPI

FastAPI är ett relativt nytt ramverk för att bygga API:er i Python. Det är snabbt och enkelt att använda. Den har inbyggd övervakning som en funktion. Det är dock ett nytt ramverk med ett relativt litet ekosystem och samhälle. Dessutom är dess användning begränsad till API:er.

Däremot är Flask mer mångsidig eftersom den kan användas för både API:er och rendering av statiska filer. Den är lätt och relativt enkel. Det är dock långsammare än FastAPI.

Flask lämpar sig bäst för webbapplikationer där du måste rendera HTML, medan FastAPI ska användas för att bygga API:er.

Läs också: FastAPI vs. Flask: Vilken av de två är rätt för dig?

Hur man skapar en applikation i Flask

I det här avsnittet kommer vi att bygga en enkel Flask-app för att visa lite HTML och tillhandahålla data via ett API. Poängen med detta är inte att tillhandahålla en heltäckande handledning till Flask. Snarare är syftet att visa dig kortfattat hur att bygga en Flask-app skulle se ut.

Förutsättningar

För att följa denna handledning måste du förstå Python 3. Dessutom skulle det vara användbart att känna till HTTP, även om det inte krävs.

För att skapa en applikation i Flask måste du först installera Python. Om du behöver en guide om hur du gör det, här är en video som guidar dig:

Skapa en virtuell miljö

Skapa först en projektmapp för applikationen. Jag kör mina kommandon i Bash Terminal; därför skapar jag en mapp med följande kommando:

mkdir flask-tut

Navigera sedan in i mappen med kommandot:

cd flask-tut

När du har navigerat in i mappen skapar du en virtuell miljö med det här kommandot. Detta säkerställer att de beroenden vi kommer att installera inte kommer i konflikt med beroenden från andra projekt.

python3 -m venv venv

Detta bör skapa en venv-mapp, som du kan se med kommandot:

ls

Aktivera virtuell miljö

Det är enkelt att aktivera en virtuell miljö. Använd bash-terminalen, ange kommandot:

source venv/bin/activate

Din terminalprompt bör ändras från denna $ till denna (venv) $.

För mer information, här är en artikel om virtuella miljöer i Python.

Installera kolven

Med en virtuell miljö kan vi fortsätta att installera Flask. För det kommer vi att använda pip:

pip install Flask

Det borde ladda ner några filer och installera beroenden.

Visar lite HTML

Därefter kan vi börja arbeta med filen main.py. Den här filen kommer att vara applikationens startpunkt.

touch main.py

När du har skapat filen main.py öppnar du den med din föredragna redigerare och lägger till följande kod:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return '<h1>Hello from Flask!</h1>'

I kodavsnittet ovan började vi med att importera klassen Flask. Därefter instansierade vi klassen Flask och skickade in variabeln __name__. Detta är en inbyggd variabel som lagrar namnet på den aktuella modulen. Flask behöver detta för att veta var man kan hitta filer. Vi lagrade instansen av Flask i appvariabeln.

Därefter skapade vi en funktion som heter index. Denna funktion returnerar HTML-koden som vi vill visa för användaren. Innan funktionsdefinitionen använde vi @app.route-dekoratören. Denna dekorator konverterar en vanlig funktion till en kolvvisningsfunktion. Detta innebär att funktionens returvärde kommer att konverteras till ett HTML-svar.

För att köra applikationen använder vi kommandot:

flask --app main run

–app-flaggan anger var applikationen är. I det här fallet, i main.py. Servern bör börja köras.

Och om du öppnar webbläsaren på http://localhost:5000 eller http://127.0.0.1:5000, bör du se en h1:

Att skriva all vår HTML i vår Python-kod skulle i allmänhet vara dåligt. Helst skulle vi vilja separera Python från HTML. Nästa avsnitt kommer att titta på hur man servar fristående HTML-filer.

Servera en HTML-fil

I det här avsnittet kommer vi att skriva koden för att tjäna en index.html-fil för vår webbplats. Låt oss först skapa filen index.html. Vi kommer att skapa den här filen i mallmappen eftersom det är där Flask letar efter vår HTML-mall

touch template/index.html

Öppna sedan filen med din föredragna redigerare och lägg till följande kod:

<!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>Hello from Flask!</h1>
  </body>
</html>

Öppna sedan filen main.py igen som vi skapade tidigare. Lägg sedan till följande import överst, precis efter kolvimporten:

from flask import render_template

Funktionen render_template vi just importerade gör att vi kan visa HTML-mallar. För att rendera en HTML-fil, ändrar vi indexfunktionen så att den ser ut så här:

@app.route("/")
def index():
    return render_template('index.html')

Stoppa servern (Ctrl + C) och starta om den med följande kommando:

flask --app main run

Ladda om webbläsarfönstret och du bör se följande.

I det här exemplet visar vi en statisk HTML-sida. Med Flask kan du också visa mallar genom att skapa HTML-mallar och tillhandahålla data. Dessa mallar följer Jinja-syntaxen. Vi kommer inte att täcka detta här för korthetens skull, men jag kommer att länka några bra resurser för att lära mig Flask senare.

Skapa en API-rutt

Att visa HTML-innehåll är en funktion i webbapplikationer. Den andra är att servera data via en API-rutt. I Flask är det också enkelt att sätta upp API-rutter. Lägg till den här koden i filen main.py för att skapa en API-rutt på ’/data’.

@app.route('/data')
def data():
    return { "status": "OK", "msg": "Hello from Flask API" }

Om en funktion returnerar ett diktat eller en lista, konverteras värdet till JSON och skickas som ett svar. Om du startar om servern och öppnar http://localhost:5000/data bör du se följande:

Resurser för att lära Flask

❇️ Den Kolvdokumentation är utmärkt för lärande. Det är välstrukturerat, tydligt och är förmodligen den mest pålitliga resursen för att lära sig Flask.

❇️ freeCodeCamp har också en bra YouTube-video på kolven. freeCodeCamp är ett känt namn för gratis men högkvalitativa lärresurser.

❇️ Detta Udemy kurs är ett bra sätt att lära sig hur man bygger företagsklassade API:er i Flask. Den täcker verktyg som Flask-SQLALchemy och Flask-Smorest.

Slutsats

Den här artikeln var en kort introduktion till Python Flask. Vi täckte vad det är, jämförde det med andra webbramverk och byggde en enkel applikation. Till sist länkade jag resurser för vidare lärande.

Kolla sedan in hur du säkrar ett Flask REST API med en JSON-webtoken.