FastAPI-backend-kehityksen intensiivikurssi · Oppitunti

Serialisointi model_dumpilla ja aliaksilla

Hallinnoikaa sitä, miten Pydantic-mallit muunnetaan dataksi ja datasta model_dumpin, kenttäaliasten, laskettujen kenttien ja serialisointiasetusten avulla selkeitä API-kuormia varten.

Oppitunti 4/413 vaihetta

Serialisointi model_dumpilla ja aliaksilla on ilmainen FastAPI-backend-kehityksen intensiivikurssi-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu FastAPI-backend-kehityksen intensiivikurssi-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. FastAPI-backend-kehityksen intensiivikurssi-kurssilla on yhteensä 4 oppituntia.

Serialisointi ja validointi

Pydantic hoitaa kaksi tehtävää: validoinnin (epäluotetusta syötteestä tulee tyypitetty malli) ja serialisoinnin (mallista tulee lähetettävä dict tai JSON). Tässä oppitunnissa keskitytään tulosteen tarkkaan hallintaan.

model_dump-perusteet

Pydantic v2:ssa model_dump() muuntaa mallin dict-objektiksi ja model_dump_json() JSON-merkkijonoksi.

from pydantic import BaseModel

class User(BaseModel):
    name: str
    age: int

u = User(name='Ada', age=36)
print(u.model_dump())
print(u.model_dump_json())

Kenttien sisällyttäminen ja poissulkeminen

Rajaa tulostetta include- tai exclude-parametrilla, jotta sisäiset tai arkaluontoiset kentät eivät päädy payloadiin.

u.model_dump(exclude={'age'})
u.model_dump(include={'name'})

Oletusarvojen ja None-arvojen poistaminen

Käytä asetuksia exclude_none=True tai exclude_defaults=True muodostaaksesi kevyempiä payloadeja, joista tyhjät arvot on jätetty pois.

class Profile(BaseModel):
    name: str
    bio: str | None = None

Profile(name='Ada').model_dump(exclude_none=True)

Kenttien aliakset

Ulkoiset API:t käyttävät usein nimiä kuten userName, kun taas Pythonissa suositaan nimeä user_name. Alias yhdistää nämä nimet.

from pydantic import BaseModel, Field

class User(BaseModel):
    user_name: str = Field(alias='userName')

Serialisointi aliaksen avulla

Oletusarvoisesti model_dump käyttää Pythonin kenttien nimiä. Välitä by_alias=True, jotta tulosteessa käytetään aliaksia.

u = User(userName='ada')
print(u.model_dump())
print(u.model_dump(by_alias=True))

populate_by_name

Aseta model_config = ConfigDict(populate_by_name=True), jotta syötettä jäsennettäessä hyväksytään joko kentän nimi tai alias. Näin molemmat suunnat ovat joustavia.

from pydantic import ConfigDict

class User(BaseModel):
    model_config = ConfigDict(populate_by_name=True)
    user_name: str = Field(alias='userName')

Lasketut kentät

Exposeeraa johdetut arvot tulosteeseen käyttämällä @computed_field-annotaatiota. Ne näkyvät model_dump-tulosteessa, mutta eivät kuulu syötteeseen.

from pydantic import computed_field

class Person(BaseModel):
    first: str
    last: str
    @computed_field
    @property
    def full(self) -> str:
        return self.first + ' ' + self.last

Mukautetut kenttäsarjallistajat

Käytä @field_serializer-annotaatiota määrittääksesi, miten tietty kenttä esitetään, esimerkiksi päivämääräajan muotoiluun tai salaisuuden peittämiseen.

from pydantic import field_serializer

class Account(BaseModel):
    card: str
    @field_serializer('card')
    def mask(self, v: str) -> str:
        return '****' + v[-4:]

Alias-kenttien muunnos puhtaalla Pythonilla

by_alias-muunnos tarkoittaa vain avainten uudelleennimeämistä. Tässä sama idea ilman Pydanticia.

data = {'user_name': 'ada', 'user_age': 36}
alias = {'user_name': 'userName', 'user_age': 'userAge'}
out = {alias[k]: v for k, v in data.items()}
print(out)

FastAPI-vastausten integrointi

FastAPI serialisoi palautusarvot response_model-mallin kautta. Määritä reitille response_model_by_alias ja poissulkemisasetukset, jotta voit muotoilla API:n tuottaman JSONin.

@app.get('/user', response_model=User, response_model_by_alias=True)
async def get_user():
    return User(user_name='ada')

Pikatarkistus

Mallissasi on user_name: str = Field(alias='userName'). Minkä avaimen model_dump(by_alias=True) tuottaa?

Kertaus

Opit Pydanticin serialisoinnin:

  • model_dump / model_dump_json sekä include-, exclude- ja exclude_none-asetukset.
  • Aliakset sekä by_alias- ja populate_by_name-asetukset.
  • Lasketut kentät ja mukautetut kenttäsarjallistajat.
  • Niiden yhdistämisen FastAPI-vastausmalleihin.
Aloita maksutta

Opi FastAPI-backend-kehityksen intensiivikurssi 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
21
Oppitunnit
84

Usein kysytyt kysymykset

Onko oppitunti ”Serialisointi model_dumpilla ja aliaksilla” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa FastAPI-backend-kehityksen intensiivikurssi-oppimispolun 3 oppituntia, myös oppitunnin “Serialisointi model_dumpilla ja aliaksilla”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. FastAPI-backend-kehityksen intensiivikurssi-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Serialisointi model_dumpilla ja aliaksilla”?

Hallinnoikaa sitä, miten Pydantic-mallit muunnetaan dataksi ja datasta model_dumpin, kenttäaliasten, laskettujen kenttien ja serialisointiasetusten avulla selkeitä API-kuormia varten. Harjoittelet FastAPI-backend-kehityksen intensiivikurssi-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni FastAPI-backend-kehityksen intensiivikurssi-opiskelun?

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

Kuinka kauan ”Serialisointi model_dumpilla ja aliaksilla”-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ä FastAPI-backend-kehityksen intensiivikurssi-oppitunnilla?

Kyllä. Jokainen FastAPI-backend-kehityksen intensiivikurssi-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. Pydantic-kenttien validointi ja validaattorit
  2. Mukautetut tietotyypit ja asetukset
  3. Sisäkkäiset mallit ja rekursiiviset rakenteet
  4. Serialisointi model_dumpilla ja aliaksilla
← Takaisin: FastAPI-backend-kehityksen intensiivikurssi