Skip to content

6. Brukerside

I denne delen skal du lage en side som viser alle tweets fra én bruker.

Flask kan ta imot verdier fra URL-en. Syntaksen <brukernavn> i ruten gjør at verdien blir sendt som argument til funksjonen:

@app.get("/bruker/<brukernavn>")
def vis_bruker(brukernavn):
# brukernavn er nå en streng med verdien fra URL-en

Hvis noen besøker /bruker/ada, vil brukernavn være "ada".

Lag en GET-rute /bruker/<brukernavn> som:

  1. finner brukeren med twitter.finn_bruker()
  2. returnerer 404 hvis brukeren ikke finnes
  3. sender brukeren til en template bruker.html
Løsningsforslag
@app.get("/bruker/<brukernavn>")
def vis_bruker(brukernavn):
bruker = twitter.finn_bruker(brukernavn)
if bruker is None:
return "Bruker ikke funnet", 404
return render_template("bruker.html", bruker=bruker)

Lag filen templates/bruker.html som viser:

  • Brukernavnet som overskrift
  • Alle tweets fra brukeren
Løsningsforslag
<!DOCTYPE html>
<html>
<head>
<title>{{ bruker.brukernavn }}</title>
</head>
<body>
<h1>{{ bruker.brukernavn }}</h1>
{% for tweet in bruker.tweets %}
<p>{{ tweet.tekst }}</p>
{% endfor %}
<a href="/">Tilbake til forsiden</a>
</body>
</html>

Oppdater index.html slik at brukernavnet i feeden blir en lenke til brukersiden.

Tips: Bruk <a href="/bruker/{{ tweet.bruker.brukernavn }}"> for å lage lenken.

Løsningsforslag
{% for tweet in feed %}
<p>
<a href="/bruker/{{ tweet.bruker.brukernavn }}">
<b>{{ tweet.bruker.brukernavn }}</b>
</a>: {{ tweet.tekst }}
</p>
{% endfor %}

I neste del skal vi bruke sessions for innlogging, slik at brukere slipper å skrive brukernavnet sitt hver gang de tweeter.