programmeren

in python

Jaar 4 - Module 1 - Les 3: Templates in Flask & Dictionaries

Dit jaar gaan we...

 

  • Leren hoe websites werken

  • Wat het verschil is tussen server & client software

Dit jaar gaan we...

 

  • Leren hoe websites werken

  • Wat het verschil is tussen server & client software
     

  • Zelf een website maken met Python, HTML & Javascript

  • Voor jezelf, of voor een eigen klant

De komende weken gaan we...

 

  • Leren hoe websites werken

  • Zelf een website maken met Python

  • Python kennis opfrissen en verdiepen

vandaag gaan we leren

 

  • Wat een dictionary is in Python

  • Hoe je een template gebruikt in Flask

Dit programma gebruikt een lijst.

Lijsten (herhaling)

In een lijst halen we een element op met een numerieke index, oftewel, een getal.

 

 

dieren = ['schildpad', 'kikker']
print(dieren[0])

Dit programma gebruikt een lijst.

Lijsten (herhaling)

In een lijst halen we een element op met een numerieke index, oftewel, een getal.

 

Bij een lange lijst is dat niet zo handig.

 

 

dieren = ['schildpad', 'kikker', 'hagedis', 'blobvis', 'hinde', ...]
print(dieren[15])

Dit programma gebruikt een lijst.

Lijsten (herhaling)

In een lijst halen we een element op met een numerieke index, oftewel, een getal.

 

Bij een lange lijst is dat niet zo handig. Als we veel dingen van verschillende soorten opslaan, gebruiken we liever een dictionary.

 

 

dieren = ['schildpad', 'kikker', 'hagedis', 'blobvis', 'hinde', ...]
print(dieren[15])

Dit programma gebruikt een dictionary.

 

 

Dictionaries

Dit programma gebruikt een dictionary.

 

 

Dictionaries

gebruiker = {
  'voornaam': 'Piet',
  'achternaam': 'de Vries',
  'geboortejaar': 2000
}

print(gebruiker['voornaam'])

Dit programma gebruikt een dictionary.

 

 

gebruiker = {
  'voornaam': 'Piet',
  'achternaam': 'de Vries',
  'geboortejaar': 2000
}

print(gebruiker['voornaam'])

Dictionaries

Aanwijzen lijkt op aanwijzen bij een lijst, maar met een naam ipv een getal

Dit programma gebruikt een dictionary.

 

 

gebruiker = {
  'voornaam': 'Piet',
  'achternaam': 'de Vries',
  'geboortejaar': 2000
}

print(gebruiker['voornaam'])

Dictionaries

Aanwijzen lijkt op aanwijzen bij een lijst, maar met een naam ipv een getal

De naam is een string dus aanhalingstekens zijn nodig

Dit programma gebruikt een dictionary.

 

 

gebruiker = {
  'voornaam': 'Piet',
  'achternaam': 'de Vries',
  'geboortejaar': 2000
}

print(gebruiker['voornaam'])

Dictionaries

Instellen gaat anders dan bij een lijst

Dit programma gebruikt een dictionary.

 

 

gebruiker = {
  'voornaam': 'Piet',
  'achternaam': 'de Vries',
  'geboortejaar': 2000
}

print(gebruiker['voornaam'])

Dictionaries

Instellen gaat anders dan bij een lijst

Ieder veld of field krijgt een naam, altijd een string

Dus ook hier aanhalingstekens!

Dit programma gebruikt een dictionary.

 

 

gebruiker = {
  'voornaam': 'Piet',
  'achternaam': 'de Vries',
  'geboortejaar': 2000
}

print(gebruiker['voornaam'])

Dictionaries

Instellen gaat anders dan bij een lijst

Ieder veld of field krijgt een naam, altijd een string

Na het veld komt een dubbele punt

Dit programma gebruikt een dictionary.

 

 

gebruiker = {
  'voornaam': 'Piet',
  'achternaam': 'de Vries',
  'geboortejaar': 2000
}

print(gebruiker['voornaam'])

Dictionaries

Instellen gaat anders dan bij een lijst

Ieder veld of field krijgt een naam, altijd een string

Na het veld komt een dubbele punt

Dan komt de waarde, dan ieder Python type zijn

Dit programma gebruikt een dictionary.

 

 

gebruiker = {
  'voornaam': 'Piet',
  'achternaam': 'de Vries',
  'geboortejaar': 2000
}

print(gebruiker['voornaam'])

Dictionaries

Instellen gaat anders dan bij een lijst

Ieder veld of field krijgt een naam, altijd een string

Na het veld komt een dubbele punt

Dan komt de waarde, dan ieder Python type zijn

Een string mag

Dit programma gebruikt een dictionary.

 

 

gebruiker = {
  'voornaam': 'Piet',
  'achternaam': 'de Vries',
  'geboortejaar': 2000
}

print(gebruiker['voornaam'])

Dictionaries

Instellen gaat anders dan bij een lijst

Ieder veld of field krijgt een naam, altijd een string

Na het veld komt een dubbele punt

Dan komt de waarde, dan ieder Python type zijn

Een getal mag ook!

demo

goed of fout?

gebruiker = {
  voornaam: 'Piet',
  achternaam: 'de Vries',
  geboortejaar: 2000
}

print(gebruiker['voornaam'])
  • Is de code goed -> schrijf wat de code print
  • Is de code fout? -> schrijf FOUT

goed of fout?

'gebruiker' = {
  'voornaam': 'Piet',
  'achternaam': 'de Vries',
  'geboortejaar': 2000
}

print('gebruiker'['voornaam'])
  • Is de code goed -> schrijf wat de code print
  • Is de code fout? -> schrijf FOUT

goed of fout?

adres_blaak = {
  'straat': 'Blaak',
  'nummer': 166
}

gebruiker = {
  'voornaam': 'Carl',
  'achternaam': 'Johnsons',
  'adres': adres_blaak
}

print(gebruiker['voornaam'])
  • Is de code goed -> schrijf wat de code print
  • Is de code fout? -> schrijf FOUT

goed of fout?

adres_blaak = {
  'straat': 'Blaak',
  'nummer': 166
}

gebruiker = {
  'voornaam': 'Carl',
  'achternaam': 'Johnsons',
  'adres': adres_blaak
}

print(gebruiker['adres']['straat'])
  • Is de code goed -> schrijf wat de code print
  • Is de code fout? -> schrijf FOUT

HTML is de codetaal die bepaalt hoe websites eruit zien.

HTML

HTML is de codetaal die bepaalt hoe websites eruit zien.

HTML

<!DOCTYPE html>
<html>
  <head>
    <title>Welkom op deze site!</title>
  </head>
  <body>
    Hallo allemaal!
    <p> Welkom </p> 
  </body>
</html>

HTML is de codetaal die bepaalt hoe websites eruit zien.

HTML

<!DOCTYPE html>
<html>
  <head>
    <title>Welkom op deze site!</title>
  </head>
  <body>
    Hallo allemaal!
    <p> Welkom </p> 
  </body>
</html>

Maar... een HTML pagina is "statisch".

HTML is de codetaal die bepaalt hoe websites eruit zien.

HTML

<!DOCTYPE html>
<html>
  <head>
    <title>Welkom op deze site!</title>
  </head>
  <body>
    Hallo allemaal!
    <p> Welkom </p> 
  </body>
</html>

Maar... een HTML pagina is "statisch".

Statisch betekent dat de pagina altijd hetzelfde is, en niet kan veranderen door een actie van de gebruiker. 

HTML is de codetaal die bepaalt hoe websites eruit zien.

HTML

<!DOCTYPE html>
<html>
  <head>
    <title>Welkom op deze site!</title>
  </head>
  <body>
    Hallo allemaal!
    <p> Welkom </p> 
  </body>
</html>

Maar... een HTML pagina is "statisch".

Statisch betekent dat de pagina altijd hetzelfde is, en niet kan veranderen door een actie van de gebruiker. 

 

Flask zorgt ervoor dat pagina's wel dynamisch worden, met templates.

Met Flask mag je variabelen

invoegen in een HTML pagina.

HTML & Flask

<!DOCTYPE html>
<html>
  <head>
    <title>Welkom op deze site!</title>
  </head>
  <body>
    Hallo allemaal!
    <p> Welkom </p> 
  </body>
</html>

Met Flask mag je variabelen

invoegen in een HTML pagina.

 

Dat doen we met dubbele krulhaakjes!

HTML & Flask

<!DOCTYPE html>
<html>
  <head>
    <title>Welkom op deze site!</title>
  </head>
  <body>
    Hallo {{name}}!
    <p> Welkom </p> 
  </body>
</html>

HTML & Flask

<!DOCTYPE html>
<html>
  <head>
    <title>Welkom op deze site!</title>
  </head>
  <body>
    Hallo {{name}}!
    <p> Welkom </p> 
  </body>
</html>

Met Flask mag je variabelen

invoegen in een HTML pagina.

 

Dat doen we met dubbele krulhaakjes!

 

Vanuit Flask geef je de variabele mee aan het template.

Even opfrissen!

 

HTML & Flask

@app.route('/')
def hello():
  return "Hallo leerlingen!"

Even opfrissen!

 

HTML & Flask

@app.route('/')
def hello():
  return "Hallo leerlingen!"

Welke pagina wordt er geladen?

Even opfrissen!

 

HTML & Flask

@app.route('/')
def hello():
  return "Hallo leerlingen!"

Dit is ons antwoord

demo

Flask kan ook een variabele uit de URL halen.

 

HTML & Flask

# Parameter example
@app.route('/hello/<string:name>')
def hello_name(name):
  return "Hallo " + name

Flask kan ook een variabele uit de URL halen.

 

HTML & Flask

Welke pagina wordt er geladen?

# Parameter example
@app.route('/hello/<string:name>')
def hello_name(name):
  return "Hallo " + name

Flask kan ook een variabele uit de URL halen.

 

HTML & Flask

De tekst achter de slash

komt in de variabele name

# Parameter example
@app.route('/hello/<string:name>')
def hello_name(name):
  return "Hallo " + name

Flask kan ook een variabele uit de URL halen.

 

HTML & Flask

# Parameter example
@app.route('/hello/<string:name>')
def hello_name(name):
  return "Hallo " + name

Flask kan die variabele gebruiken

demo

HTML & Flask

# Parameter example
@app.route('/hello/<string:name>')
def hello_name(name):
  return "<b>Hallo " + name + "</b>"

We kunnen hier dus ook HTML code neerzetten.

HTML & Flask

# Parameter example
@app.route('/hello/<string:name>')
def hello_name(name):
  return "<b>Hallo " + name + "</b>"

We kunnen hier dus ook HTML code neerzetten.

 

Maar, dat wordt snel een rommeltje.

We werken liever met templates.

HTML & Flask

@app.route('/hello_template/<string:name>')
def hello_template(name):
  return render_template('front_page.html',name=name)

Geef een template als antwoord

HTML & Flask

@app.route('/hello_template/<string:name>')
def hello_template(name):
  return render_template('front_page.html',name=name)

Het template front_page.html

HTML & Flask

@app.route('/hello_template/<string:name>')
def hello_template(name):
  return render_template('front_page.html',name=name)

Het template front_page.html

<!DOCTYPE html>
<html>
  <head>
    <title>Welkom op deze site!</title>
  </head>
  <body>
    Hallo {{name}}!
    <p> Welkom </p> 
  </body>
</html>

HTML & Flask

@app.route('/hello_template/<string:name>')
def hello_template(name):
  return render_template('front_page.html',name=name)

Variabele name in het template wordt de name uit de url

<!DOCTYPE html>
<html>
  <head>
    <title>Welkom op deze site!</title>
  </head>
  <body>
    Hallo {{name}}!
    <p> Welkom </p> 
  </body>
</html>

demo

Flask in repl.it

Maak hier een nieuwe map

Flask in repl.it

Maak hier een nieuw HTML bestand

opdrachten

opdrachten

  • Volg deze HTML/Flask les: bit.ly/flask-templates

 

 

 

 

 

opdrachten

  • Volg deze HTML/Flask les: bit.ly/flask-templates
     
  • Gebruik templates op jouw site

 

 

 

 

 

opdrachten

  • Volg deze HTML/Flask les: bit.ly/flask-templates

  • Gebruik templates op jouw site






Klas 4 - Module 1 - Les 3

By Felienne

Klas 4 - Module 1 - Les 3

Leerdoel Module: Website maken met Flask Lesdoel: Begin dictionaries.

  • 664