Hoe een verzoek werkt
Je hebt de stukken gebouwd: endpoints, templates, een database en een formulier, en in de uitbreidingen misschien htmx, JavaScript en een sessie. Onderweg zag je in zes diagrammen, op vijf pagina's, wat er bij één handeling achter elkaar gebeurt, browser links en server rechts, elke keer met meer ertussen:
- Zo werkt het: je eerste verzoek: één functie, JSON terug.
- Zo werkt het: CSS en afbeeldingen: de browser haalt CSS en afbeeldingen apart op, zonder functie van jou.
- Zo werkt het: klikken en versturen: van link tot pagina, met alleen HTML over de lijn, en van versturen tot omleiding.
- Zo werkt het: een verzoek met htmx: hetzelfde formulier met htmx, en een stuk HTML als antwoord.
- Zo werkt het: een sessie: hoe de server je herkent zonder dat de browser iets weet.
Waar hoort jouw code
Kom je vast te zitten bij een nieuwe functie, zoek dan eerst de stap op waar hij thuishoort:
| Wat je wilt | Welke stap | Waar het staat |
|---|---|---|
| Een nieuwe pagina bereikbaar maken | klik, stap 3 | @app.get(...) in main.py |
| Iets uit de database halen | klik, stap 4 | in je endpoint-functie |
| Bepalen hoe het eruitziet | klik, stap 5 | je template in templates/ |
| Reageren op klikken en typen | klik, stap 7 | static/js/app.js |
| Controleren wat een bezoeker instuurt | formulier, stap 4 | in je endpoint-functie, nooit alleen in de HTML |
| Iets aan de server vragen zonder dat de pagina verspringt | zonder herladen, stap 1 | hx-get of hx-post in je HTML, en een endpoint dat een stukje teruggeeft |
| Onthouden wie er terugkomt | sessie, stap 3 | sessies.db, met alleen het id in de cookie |
| Een eigen pagina als iets niet bestaat | klik, stap 3 of 4 | @app.exception_handler(404) en een template |
De regel over controleren is de valkuil. Stap 1 van het formulier gebeurt in de browser, en die is van de bezoeker. Zie Server of browser?.