HTML tonen
In de vorige les gaf je endpoint JSON terug. In deze les leer je hoe je een HTML pagina teruggeeft.
HTMLResponse importeren
Pas je main.py aan:
from fastapi import FastAPI
from fastapi.responses import HTMLResponse
app = FastAPI()
Een HTML pagina tonen
@app.get("/pagina", response_class=HTMLResponse)
async def pagina():
return """
<!DOCTYPE html>
<html>
<head>
<title>Mijn Pagina</title>
</head>
<body>
<h1>Hallo!</h1>
<p>Dit is mijn eerste HTML pagina.</p>
</body>
</html>
"""
Wat is nieuw?
response_class=HTMLResponse- Vertelt FastAPI dat je HTML terugstuurt (niet JSON)- De functie returnt een string met HTML code
"""..."""is een multi-line string
Testen
Ga naar http://127.0.0.1:8000/pagina. Je ziet nu een echte webpagina!
CSS toevoegen
Je kunt CSS in een <style> tag zetten:
@app.get("/styled", response_class=HTMLResponse)
async def styled():
return """
<!DOCTYPE html>
<html>
<head>
<title>Met CSS</title>
<style>
h1 { color: blue; }
p { color: gray; }
</style>
</head>
<body>
<h1>Gestylede pagina</h1>
<p>Deze tekst is grijs.</p>
</body>
</html>
"""
Opdrachten
Opdracht 1: Predict - JSON of HTML?
@app.get("/test")
async def test():
return {"titel": "<h1>Hallo</h1>"}
Vraag: Zie je een heading of JSON?
Klik hier voor het antwoord
Je ziet JSON: {"titel": "<h1>Hallo</h1>"}. Zonder response_class=HTMLResponse stuurt FastAPI altijd JSON terug.
Opdracht 2: Make - Eigen pagina
Maak een endpoint /profiel dat een HTML pagina toont met:
- Jouw naam als heading
- Een paragraaf over jezelf
- Een gekleurde heading via CSS
Opdracht 3: Make - Twee pagina's
Maak twee endpoints (/pagina1 en /pagina2) die elk een andere HTML pagina tonen. Voeg op elke pagina een link toe naar de andere:
<a href="/pagina2">Ga naar pagina 2</a>