Ga naar hoofdinhoud

Wat je server laat zien: een .gitignore en een nette zip

Hier bouw je op verder: Bestanden negeren met .gitignore

Weet je dit niet meer zeker? Lees het terug voordat je verdergaat.

In les 5 zag je welke bestanden in je map niet bij je code horen. Je kunt ze elke keer met de hand overslaan, maar één keer vergeten is genoeg. Laat het daarom een bestand onthouden.

Een .gitignore voor je server​

Staat deze map nog niet in git, typ dan eerst git init in de terminal van VS Code, zoals in een repository starten met git init. Typ daarna git status --short. Die geeft een korte lijst van alles wat git ziet:

?? .venv/
?? __pycache__/
?? dicht.py
?? gastenboek.db
?? handleiding.py
?? lees_sessies.py
?? main.py
?? sessies.db
?? sessies.py
?? twee.py

Staat .venv/ niet in jouw lijst? Dan heb je Python 3.13 of nieuwer. Die zet bij het aanmaken een eigen .gitignore in de map .venv, zodat git hem al overslaat. De rest van de lijst is hetzelfde.

?? betekent: git kent dit bestand nog niet, en neemt het mee zodra je alles toevoegt. Ook de databases dus.

Maak in VS Code naast main.py een bestand .gitignore, met de punt vooraan, en zet erin:

.venv/
__pycache__/
*.db

Een regel die eindigt op / slaat een hele map over. *.db slaat elk bestand over dat op .db eindigt: gastenboek.db, sessies.db, en in je eigen gastenboek ook gebruikers.db. Sla op en typ opnieuw git status --short.

.gitignore hoort zelf wel in je repository: zo weet een klasgenoot die je project ophaalt welke bestanden er niet bij horen. De regel .venv/ zet je er ook in als je Python de map al overslaat; dan werkt hij ook met een oudere Python.

Een zip zonder databases​

Een zip kent geen .gitignore: hij pakt alles wat je selecteert. Kies in de Verkenner van Windows (of de Finder op een Mac) daarom niet de hele map, maar alleen wat je wilt delen: main.py, je scripts als iemand die moet zien, en static/ en templates/ als je project die heeft. Maak daar een zip van.

Open de zip daarna, en kijk of er geen .db-bestand of .venv in staat. Wie je project nakijkt, heeft je code nodig, niet de berichten en sessie-id's van je bezoekers. De pagina Project checken vraagt ook alleen om main.py, static/ en templates/.

Controlevraag
Je kopieert de hele map veiligheid-zichtbaar naar een USB-stick. Gaat sessies.db mee, nu je .gitignore *.db overslaat?
Kies wat jij denkt. Bij het goede antwoord zie je de uitleg.

Er gaat iets mis​

Een database die al in git stond​

In deze map kan dat niet, want je begon net met git init. Maar in je eigen project, dat al langer in git staat, laat git status --short na je .gitignore misschien nog een database zien, met een M ervoor:

M sessies.db

Oorzaak: je had sessies.db al eerder met git vastgelegd, met een commit. .gitignore slaat alleen bestanden over die git nog niet kent. Een bestand dat al in je repository staat, blijft git volgen.

Oplossing: haal het bestand uit git, maar laat het op je computer staan:

git rm --cached sessies.db

Maak daarna een commit. Stond de repository al op GitHub, dan staat het bestand nog in de oude commits, en kan iedereen het daar ophalen. Gooi dan ook sessies.db op je computer weg: je server begint met een lege, en kent de oude sessie-id's niet meer. Wie ze uit GitHub haalt, kan er dan niets mee.

Opdrachten​

Opdracht 1: Predict - Een nieuwe database​

Je zet later in deze map een server met accounts neer, die een gebruikers.db maakt. Je .gitignore is niet veranderd.

Vraag: staat gebruikers.db dan in de lijst van git status --short?

Antwoord

Nee. *.db slaat elk bestand over dat op .db eindigt, ook een database die er nog niet was toen je de regel schreef. Daarom gebruik je hier *.db en niet de losse namen.

Opdracht 2: Make - In je eigen project​

Loop je eigen project na, of je gastenboek uit de FastAPI-lessen: wat laat je server zien, en wat staat er in je map?

Tip

Begin met /docs van je eigen project open. Wat daar staat, is precies wat een klasgenoot zou zien als je je server openzet.

Antwoord

Loop deze lijst af:

  • Elk endpoint op /docs is voor iedereen bedoeld. Een endpoint dat je voor jezelf maakte, zoals GET /sessies uit Sessies, is weg.
  • docs_url=None, redoc_url=None en openapi_url=None staan in je FastAPI(), voordat je je server openzet zoals in Laat het aan anderen zien.
  • Er staat een .gitignore met .venv/, __pycache__/ en *.db.
  • git status --short noemt geen .db-bestand.
  • Een zip die je deelt, bevat geen .db-bestand en geen .venv.

Voor de handleiding verander je alleen de regel waar je app begint. Vervang je bestaande app = FastAPI() door:

app = FastAPI(docs_url=None, redoc_url=None, openapi_url=None)

De rest van main.py blijft. Werk je zelf nog aan je project, dan kun je de handleiding laten staan zolang je server op 127.0.0.1 draait, en hem uitzetten zodra anderen erbij kunnen.

Door naar les 7: in de praktijk.