Flask Academy · Lektion

Skjut in en kontext i skript och skal

Kör kod utanför en begäran med app_context.

Lektion 4 av 413 steg

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. 🎉

Gratis att börja

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

  1. Appkontext kontra requestkontext
  2. current_app och g-objektet
  3. Kontextlokaler och trådsäkerhet
  4. Skjut in en kontext i skript och skal
← Tillbaka till Flask Academy