Skjut in en kontext i skript och skal
Kör kod utanför en begäran med app_context.
Skjut in en kontext i skript och skal är en gratis lektion i Flask Academy på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Flask Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Flask Academy innehåller totalt 4 lektioner.
Utanför webben
Ibland kör du Flask-kod utan en request, till exempel ett script som fyller databasen med startdata. Då finns ingen kontext, så de vanliga proxyerna misslyckas.
Det avslöjande felet
Kör sådan kod så kastar Flask RuntimeError: working outside of application context. Det betyder att ingen appkontext är aktiv.
Aktivera den själv
Lös det genom att aktivera en med app.app_context(). Omslut koden i ett with-block så börjar current_app fungera igen.
with app.app_context():
print(current_app.name)Vad with-blocket gör
När with-blocket börjar aktiveras kontexten, och när det avslutas tas kontexten bort. Du behöver aldrig städa upp manuellt.
Nu fungerar tilläggen
Inuti blocket fungerar tillägg som är bundna till appen normalt. Du kan köra db.create_all() eller fråga modeller från ett vanligt script.
with app.app_context():
db.create_all()Behöver du en falsk request?
För att testa kod som läser request pushar du en testbegäranskontext med test_request_context i stället för en appkontext.
with app.test_request_context("/hello"):
print(request.path)Flask Shell
Kommandot flask shell öppnar ett Python-skal där en appkontext redan har pushats, så att du kan undersöka appen interaktivt.
flask shellÄven CLI-kommandon
Anpassade flask-kommandon som du registrerar körs också automatiskt i en appkontext, så seednings- och administrationsskript fungerar direkt.
@app.cli.command()
def seed():
db.create_all()Välj rätt kontext
Välj efter behov: använd app_context när du bara arbetar med appen eller databasen, och en requestkontext när koden läser requestdata.
Begränsa omfattningen
Pusha kontexter i ett kompakt with-block, inte under hela skriptets körning. En mindre omfattning ger tydligare kod och förutsägbar nedmontering.
Varför detta är viktigt
Genom att pusha kontexter kan du återanvända applogik i migrations, cron-jobb och tester, inte bara i aktiva webbförfrågningar.
Snabb kontroll
Låt oss se till att lösningen på kontextfelet blir rätt.
Sammanfattning
Ingen request? Pusha en. Använd app_context för arbete med appen och databasen, test_request_context för requestdata och låt flask shell sköta resten åt dig. 🎉
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”Skjut in en kontext i skript och skal” gratis?
Ja – hela texten till ”Skjut in en kontext i skript och skal” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Flask Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Flask Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Skjut in en kontext i skript och skal”?
Kör kod utanför en begäran med app_context. Ni övar på Flask Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Flask Academy?
Du behöver inga förkunskaper. Utbildningen i Flask Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Skjut in en kontext i skript och skal”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Flask Academy-lektionen?
Ja. Varje Flask Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Appkontext kontra requestkontext
- current_app och g-objektet
- Kontextlokaler och trådsäkerhet
- Skjut in en kontext i skript och skal