Flask Academy · Oppitunti

Alusta extensionit init_appilla

Siirrä extensionin sitominen sovelluksen luontiin.

Oppitunti 3/413 vaihetta

Alusta extensionit init_appilla on ilmainen Flask Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Flask Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Flask Academy-kurssilla on yhteensä 4 oppituntia.

Laajennusten pulma

SQLAlchemyn kaltaiset laajennukset ottivat aiemmin sovelluksen heti käyttöönsä. Tehdasfunktion sisällä tämä ei toimi, koska app-sovellusta ei ole vielä olemassa moduulin tuontivaiheessa. 🤔

Luokaa ilman sovellusta

Ratkaisu koostuu kahdesta vaiheesta. Luokaa ensin laajennusobjekti moduulitasolla välittämättä sille app-sovellusta. Se pysyy toistaiseksi sitomattomana.

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()  # no app yet

Sitokaa myöhemmin

Kutsukaa toisessa vaiheessa init_app-funktiota tehdasfunktion sisällä, kun sovellus on luotu. Näin laajennus sidotaan kyseiseen instanssiin.

def create_app():
    app = Flask(__name__)
    db.init_app(app)
    return app

Miksi kaksi vaihetta

Laajennusobjektin voi tuoda mistä tahansa globaalina, kun taas varsinainen sitominen odottaa siihen asti, että tehdasfunktio valitsee asetukset. Näin saatte molempien lähestymistapojen hyödyt.

Tuotavissa kaikkialla

Koska db sijaitsee moduulitasolla, mallinne ja näkymänne voivat tuoda sen vapaasti koskematta sovellukseen. Näin vältätte kehäriippuvuudet.

from app.extensions import db

Siisti extensions-moduuli

Yleisessä mallissa kaikki sitomattomat laajennukset pidetään yhdessä extensions.py-tiedostossa, minkä jälkeen tehdasfunktio tuo ja alustaa ne yksitellen.

db = SQLAlchemy()
migrate = Migrate()
login = LoginManager()

Alustakaa monta kerralla

Kutsukaa create_app-funktion sisällä yksinkertaisesti kunkin laajennuksen init_app-funktiota ja välittäkää niille kaikille sama uusi sovellus.

db.init_app(app)
migrate.init_app(app, db)
login.init_app(app)

Sovelluskohtainen sitominen

Koska sitominen tapahtuu tehdasfunktiossa, kaksi eri sovellusta voi kutsua kumpikin init_app-funktiota samalle laajennusluokalle itsenäisesti. Tämä sopii erinomaisesti testeihin.

Asetukset luetaan alustuksen yhteydessä

Laajennukset lukevat esimerkiksi tietokannan URI:n kaltaiset asetukset init_app-funktion aikana, joten määrittäkää nämä asetukset ennen niiden sitomista.

app.config["SQLALCHEMY_DATABASE_URI"] = uri
db.init_app(app)

Käyttäkää sitä kontekstin sisällä

init_app-funktion jälkeen laajennus tarvitsee app context-kontekstin kyselyiden suorittamiseen, koska sen on tiedettävä, minkä sovelluksen kanssa se toimii.

with app.app_context():
    db.create_all()

Kultainen sääntö

Luokaa laajennus sitomattomana tuontivaiheessa ja kutsukaa sitten tehdasfunktiossa init_app-funktiota. Tämä yksinkertainen jako mahdollistaa koko mallin. 🔑

Pikatarkistus

Miksi laajennusobjekti luodaan ilman sovellusta ja sille kutsutaan myöhemmin init_app-funktiota?

Kertaus

Opitte kaksivaiheisen toimintatavan: luokaa laajennukset sitomattomina ja kutsukaa sitten tehdasfunktiossa init_app-funktiota. Näin saatte tuotavat globaalit objektit ja sovelluskohtaisen sitomisen ilman kehäriippuvuuksia. 🌟

Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”Alusta extensionit init_appilla” ilmainen?

Kyllä – oppitunnin ”Alusta extensionit init_appilla” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Flask Academy-kurssin, päivitä CoddyKit PROhon. Flask Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Alusta extensionit init_appilla”?

Siirrä extensionin sitominen sovelluksen luontiin. Harjoittelet Flask Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Flask Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Flask Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Alusta extensionit init_appilla”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Flask Academy-oppitunnilla?

Kyllä. Jokainen Flask Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Globaalin app-olion ongelmat
  2. Kirjoita create_app-funktio
  3. Alusta extensionit init_appilla
  4. Rekisteröi Blueprintit factoryssa
← Takaisin: Flask Academy