Python og Flask for fullstack

Python er blant de letteste programmeringsspråkene å lære, og Flask er kanskje det enkleste rammeverket til Python for web-applikasjoner. Denne artikkelen får deg raskt i gang!

En Jinja-shrine i Japan. Som representerer Jinja logoen.
Morten Myrstad
15.2.2024

Del innlegget

Hva er Flask

Flask er et Python fullstack-rammeverk. Det vil si at det kan brukes til å implementere APIer, en frontend eller en backend, eller alle i kombinasjon. Flask gir utviklere muligheten til å implementere alle REST metodene som kan brukes til å hente, sende, oppdatere eller slette informasjon. Flask er designet for å være enkelt å komme i gang med og enkelt å skalere til større og mer avanserte prosjekter. Flask kan også brukes til å hente informasjon fra andre tredjeparts API-er, som i prosjektet innebærer å hente værdata.

Hva er Jinja

Jinja er et HTML basert språk for å kommunisere mellom Python (flask) og HTML. Dette gir muligheten til å hente og bearbeide data i Python for å vise dataen i HTML på en Python-server via språket Jinja. Jinja inkluderer funksjonalitet som ikke er i HTML, som IF-ELSE betingelser, løkker og muligheten til å importere andre HTML-filer, ofte kalt komponenter, direkte inn i egen HTML-struktur. Eventuelt utvide andre HTML/Jinja-komponenter, denne prosessen kalles templating.

Komme i gang med Flask

Husk å installere flask med pip

pip install flask

Hvis du dessverre ikke har pip, kan du sjekke denne guiden for hvordan å installere det og komme i gang. Lag en hoved Python-fil gjerne main.py. Så lagrer du denne koden, før vi kan kjøre serveren.

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
  return 'Hei verden, dette er frontsiden'

Sjekk gjerne ut den offisielle dokumentasjonen til Jinja for en mer utfyllende guide til å begynne med webutvikling med Python.

Komme i gang med Jinja

Tenk deg at main.py ligger i roten av folderen. Lag en fil /templates/index.html med dette for eksempel:

<!doctype html>
<html>
  <head>
    <title>Min Flask nettside</title>
  </head>
  <body>
    <h1>Hei fra template!</h1>
  </body>
</html>

main.py

from flask import Flask, render_template

app = Flask(__name__)

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

Sjekk ut mer jinja-funksjonalitet i dokumentasjonen til Flask her.

Fordeler og ulemper med Flask

Fordeler

  • Enkelt å komme i gang med
  • Enkelt å ekspandere
  • Kraftig og brukbart

Ulemper

  • Jinja og templating er vanskelig å feilsøke
  • Hosting er mer komplisert og dyrere enn tradisjonelle alternativer
  • Python er kjent for å være tregt og bruke mye RAM

Om fordelene veier opp for ulempene varier veldig på prosjektet, hvis du ikke trenger en backend eller API-logikk er det ikke anbefalt å benytte Flask. Da static-site-generators som Astro er mer egnet for større prosjekter som kun er frontend. Og selv om du trenger fullstack finnes det javascript alternativer som react’s next.js og svelte’s sveltekit. Og for backend finnes det mer egnet språk som go, rust eller c for bedre hastighet. Men skal du derimot lage noe enkelt, en demo eller proof-of-concept som et skoleprosjekt er hurtigheten på utviklinger 100% verdt det.

Les mer om

Les kronologisk