Laboration W3: Flask
- Inlämningsdatum 23 feb 2024 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).
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.
- Provkör med en webbsida som inte finns. Vad får du för felutskrift?
Uppgift 2: Hello world
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).
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:
- Spara programmet horoskop.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
- ...och textfilen texter.txt:
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
- Ladda upp bägge på pythonanywhere. Programmet horoskop.py ska ligga i mappen mysite, och filen texter.txt ska ligga i mappen static.
- Kopiera horoskop.py till flask_app.py och se om du kan få upp programmet på din webbsida!
Uppgift 4:
- Gå till Web i menyn
- 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
Lämna in
- Ditt program från uppgift 1.
- Ditt program från uppgift 3.
- Länken till din hemsida på https://eu.pythonanywhere.com/ Links to an external site.
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.
Redovisa rester
Om du har labbar, övningar, P-uppgifts-kompletterin/plussning, komplettering av provet eller något annat kvar att redovisa kan du göra det kl 15-17. Stanna kvar i samma sal och köa här:
https://queue.csc.kth.se/Queue/DD1319
I rutan Location till vänster: Skriv vilken dator du sitter vid (t ex Grön-01). I rutan Comment: Skriv vad du vill redovisa, och din grupp (Basilika/Mynta/Timjan/Rosmarin).