Hoppa till innehåll
Meny
  • Hem
  • Dokument
  • Om Mig
Geosupportsystem

Python för Webb

Publicerat den 2017-06-26

I mitt projekt med GeoRover så behöver jag koppla ihop ett webbinterface med python, så att användaren kan anropa olika skript från gränssnittet och även se resultat från dessa.
I detta inlägg kikar jag lite på Flask, som är ett ramverk för webbutveckling med Python.
Jag kommer så småningom att behöva installera ett ramverk fullständigt, men så länge följer jag rekommendationen att installera i en virtuell miljö:

sudo apt-get install python-virtualenv
mkdir testprojekt
cd testprojekt
virtualenv venv
. venv/bin/activate

Ovanstående skapar en virtuell miljö där jag kan experimentera bäst jag vill, och när jag vill ”hoppa ur” denna miljö så skriver jag in kommandot: deactivate
Flask installeras i den virtuella miljön med ett pip-kommando:

sudo pip install Flask

Jag börjar med det obligatoriska ”Hello World”, genom att skapa en fil som jag döper till ”hello.py”, med följande innehåll:

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
 return 'Hello World!'

Mycket kortfattat så kommer skriptet att lyssna efter en adress och om det är ’/’, det vill säga roten på webbservern så svarar den med texten ’Hello World!’.
Det går med andra ord att byta ut denna text mot en text som är en hel hemsida, eller välja att lyssna efter flera olika adresser för att ge olika texter som svar.
Skriptet skall exporteras till flask och sedan skall servern startas:

export FLASK_APP=hello.py
flask run --host=0.0.0.0

Tillägget med –host=0.0.0.0 behövs om man vill komma åt servern från en annan dator än den lokala, så om du provar på en egen dator så kan du strunta i detta, men om du som jag kör på en Raspberry Pi och vill komma åt den via nätverket och enhetens IP-adress så.
Skärmbild från 2017-06-19 10-28-11.png
För att få Flask att köra ett skript så kan man använda ”POST” (jag behövde även ”GET” i methods), vilket jag enkelt kan testa genom att modifiera pythonskriptet något. Importera ”request” från flask, samt mitt egentillverkade ”test”, som är ett enkelt pythonskript som bara returnerar en text när anropet till funktionen ”test()” utförs, men det skulle kunna vara hur avancerat som helst (fånga waypoint?).
När jag anger adressen ”/rover” i webbläsaren så får jag fram en knapp med texten ”Tryck”. När jag trycker på denna så körs mitt pythonskript och jag får ett svar som skrivs till skärmen.
Jag skulle kunna göra hela mitt gränssnitt på detta sätt. En lista med knappar som alltid skrivs till skärmen, och en funktion som fångar ”POST” från dessa och kör olika skript beroende på vilken knapp som tryckts ner. Då måste jag dock kunna skilja ut vilken knapp som tryckts ned.
Genom att namnge alla knappar till samma namn, exempelvis ”knapp”, så kan jag kontrollera med ett ”form” kommando vilket värde (value) som den nedtryckta knappen har, och därmed koppla knappar till olika händelser.

<input type="submit" name="knapp" value="Skapa WP">
if request.form['knapp'] == 'Skapa WP':
   gor_något()

Strålande!

Lämna ett svar Avbryt svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

     Mastodon  

Senaste kommentarer

  • Gustav G om Mäta kurvradier med GNSS
  • Sur om Varför är stiftpennor så långa?
  • QGIS 3.44 LTR – Geosupportsystem om Zorin på gammal laptop
  • Stefan Ene om Zorin på gammal laptop
  • Samira A om Om Mig

Arkiv

Meta

  • Logga in
  • Flöde för inlägg
  • Flöde för kommentarer
  • WordPress.org
©2026 Geosupportsystem | WordPress-tema av Superbthemes.com