Laboration W3: Flask
- Inlämningsdatum 24 feb av 18:00
- Poäng 1
- Lämnar in en filuppladdning
- Filtyper html, pdf, txt, py, jpg, html och css
Tredje labben handlar om webbprogrammering med Python
I denna labb ska du prova att använda Flask. Flask är ett ramverk för webprogrammering med Python.
Läsanvisning:
10.1. Toward Modern Web Development Links to an external site.
10.3. Routing Links to an external site.
10.4. Static Files Links to an external site.
10.5. Rendering Templates Links to an external site.
(och resten av kap 10 om du vill).
Guide till eu.pythonanywhere (slides, med tips till felsökning)
Uppgift 1: Läsa från webben i Python
Här ska du prova att läsa från en webbsida med Python (utan Flask).
Kopiera följande program:
import urllib.request def räknaOrd(rad): orden = rad.split() antal = len(orden) return antal def main(): url = "https://www.gutenberg.org/cache/epub/4300/pg4300.txt" webbfil = urllib.request.urlopen(url) ordTotalt = 0 for rad in webbfil: radSomSträng = rad.decode() ordTotalt += räknaOrd(rad) print(ordTotalt) if __name__== "__main__": main()
- Lägg till kod som skriver ut några av raderna.
- Provkör programmet med några olika webbsidor.
- Spara utskriften som kommentarer sist i ditt program.
- Provkör med en webbsida som inte finns. Vad får du för felutskrift?
Uppgift 2: Testa Flask på pythonanywhere
Logga in på https://eu.pythonanywhere.com/ Links to an external site. och gå in på Web i menyn.
Ta bort den gamla webappen genom att klicka på Delete-knappen längst ned på sidan. Tryck därefter på Add a new web app till vänster på sidan och följ alla steg i den tutorial du kommer till. Behåll alla föreslagna namn (mysite för katalogen, flask_app.py för programmet). OBS! Om du inte kommer till en tutorial så är alla inställningar troligen klara - hoppa direkt till Uppgift 3.
När du är klar ska du ha en egen "Hello world"-app som du kan nå från din egen pythonanywhere-sida.
Uppgift 3: Lägg upp programmet horoskop
- Spara horoskop-programmet som flask_app.py :
#Horoskop from flask import Flask from random import randrange def hämta_förutsägelser(filnamn): x = "" förutsägelselista = [] try: with open(filnamn,"r") as infil: for rad in infil: förutsägelselista.append(rad.strip()) except FileNotFoundError: x = "Filen fanns inte" return förutsägelselista def slumpa(förutsägelselista): antal = len(förutsägelselista) slump = randrange(antal) förutsägelse = förutsägelselista[slump] return förutsägelse app = Flask(__name__) @app.route('/') def horoskop(): filnamn = "static/texter.txt" förutsägelselista = hämta_förutsägelser(filnamn) förutsägelse = slumpa(förutsägelselista) htmlkod = " " htmlkod += "" htmlkod += " " htmlkod += förutsägelse htmlkod += " " return htmlkod
- Spara textfilen texter.txt. Om du vill kan du byta ut förutsägelserna mot något annat, t ex träning (20 sit-ups) eller middag (lasagne).
Din tama padda kommer att ha magknip under eftermiddagen Ditt skosnöre kommer att gå av när du springer till bussen Kåren serverar lasagne men du har matlåda med dig Pendeltåget är inställt Du körde tentan Du får gratis kaffe framför KTH Entré Du klarade tentan Du lyckas boka ett grupprum i biblioteket Deadline för inlämningen flyttas fram till nästa måndag Det blir plötsligt sommar
- Gå in på Files på pythonanywhere och ladda upp både flask_app.py och texter.txt. Programmet flask_app.py ska ligga i mappen mysite, och filen texter.txt ska ligga i mappen static.
Uppgift 4: Kan du köra horoskopet från din webbsida?
- Gå till Web i menyn på pythonanywhere.
- Under rubriken Static Files:
- Klicka på Enter URL, skriv /
- Klicka på Enter path, skriv /home/<ditt användarnamn>/static
- Klicka på Reload-knappen i toppen av sidan
- Gå in på din webbsida https://<ditt användarnamn>.eu.pythonanywhere.com/ (t ex https://kthnamn.eu.pythonanywhere.com Links to an external site.)
Lämna in
- Ditt program från uppgift 1, inklusive kommentarer sist med utskrift av progamkörningar.
- En liten fil med bara länken till din webbsida.
Peer review
Om du lämnat in kl 14:45 så kommer du automatiskt att få se tre andras inlämningar. I denna labb är det frivilligt att kommentera på övrigas inlämningar.
Quiz W3