Een context pushen in scripts en shells
Voer code buiten een request uit met app_context.
Een context pushen in scripts en shells is een gratis Flask Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Flask Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Flask Academy bevat in totaal 4 lessen.
Buiten het web
Soms voer je Flask-code uit zonder aanvraag, bijvoorbeeld in een script dat de database vult. Er is dan geen context, dus de gebruikelijke proxies werken niet.
De veelzeggende fout
Voer zulke code uit en Flask genereert RuntimeError: working outside of application context. Daarmee geeft Flask aan dat er geen app-context actief is.
Activeer deze zelf
Los dit op door er één te activeren met app.app_context(). Omring je code met een with-blok en current_app werkt weer.
with app.app_context():
print(current_app.name)Wat het with-blok doet
Bij het binnengaan van het with-blok wordt de context geactiveerd en bij het verlaten ervan verwijderd. Je hoeft nooit zelf op te ruimen.
Nu werken extensies
Binnen het blok gedragen extensies die aan de app zijn gekoppeld zich normaal. Je kunt db.create_all() uitvoeren of modellen opvragen vanuit een gewoon script.
with app.app_context():
db.create_all()Een neppe aanvraag nodig?
Om code te testen die request leest, duw je een testaanvraagcontext met test_request_context op zijn plek in plaats van een appcontext.
with app.test_request_context("/hello"):
print(request.path)De Flask-shell
Met de opdracht flask shell open je een Python-shell waarin al een appcontext actief is, zodat je interactief met je app kunt experimenteren.
flask shellOok CLI-opdrachten
Aangepaste flask-opdrachten die je registreert, worden ook automatisch binnen een appcontext uitgevoerd, zodat seed- en beheerscripts direct werken.
@app.cli.command()
def seed():
db.create_all()Kies de juiste context
Kies op basis van wat je nodig hebt: gebruik app_context wanneer je alleen de app of database aanraakt, en een requestcontext wanneer je code aanvraaggegevens leest.
Houd de context beperkt
Duw contexten in een compact with-blok op hun plek, niet voor het hele script. Een kleinere scope betekent duidelijkere code en een voorspelbare opruiming.
Waarom dit belangrijk is
Door contexten op hun plek te duwen, kun je applogica hergebruiken in migraties, cronjobs en tests, niet alleen binnen actieve webaanvragen.
Korte controle
Laten we de oplossing voor de contextfout goed vastleggen.
Samenvatting
Geen aanvraag? Duw er een op zijn plek. Gebruik app_context voor werk aan de app en database, test_request_context voor aanvraaggegevens, en laat flask shell dit voor je afhandelen. 🎉
Leer Python met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 30
- Lessen
- 120
Veelgestelde vragen
Is de les “Een context pushen in scripts en shells” gratis?
Ja — de volledige tekst van “Een context pushen in scripts en shells” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Flask Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Flask Academy bevat in totaal 4 lessen.
Wat leer ik in “Een context pushen in scripts en shells”?
Voer code buiten een request uit met app_context. Je oefent met Flask Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Flask Academy te beginnen?
Ervaring vooraf is niet nodig. Flask Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Een context pushen in scripts en shells”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Flask Academy?
Ja. Elke les over Flask Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- App-context versus request-context
- current_app en het g-object
- Context locals en threadveiligheid
- Een context pushen in scripts en shells