Kaip apibrėžti būtinus laukus Pydantic

Kaip Apibrezti Butinus Laukus Pydantic



Privalomas laukas yra laukas, kuris turi būti duomenų modelyje. Šie laukai yra būtini ir negali būti palikti tušti, nes jie reikalingi norint tinkamai veikti arba užbaigti procesą. Jei būtinam laukui reikšmė nesuteikiama, Pydantic pateiks ValueError išimtį. Laukus galima apibrėžti kaip būtinus įvairiais būdais. Tačiau „Pydantic“ pagal numatytuosius nustatymus nustato visus duomenų modelio laukus „būtina“. Šiame straipsnyje bus parodyta, kaip apibrėžti būtinus laukus „Pydantic“. Taip pat aptarsime keletą gerų patarimų, kaip naudoti privalomus laukus.

Privalumai naudojant privalomus laukus

Privalomų laukų naudojimas „Pydantic“ turi keletą privalumų.

  • Duomenų išsamumo užtikrinimas: Privalomi laukai padeda užtikrinti, kad mūsų duomenų modeliai būtų išsamūs ir galiojantys. Tai gali padėti išvengti kodo ir duomenų apdorojimo klaidų.
  • Apsauga nuo kenkėjiškos įvesties: Privalomi laukai taip pat gali būti naudojami siekiant užkirsti kelią piktybiniams vartotojams įvesti neteisingus duomenis į jūsų sistemą.
  • Kad kodas būtų skaitomesnis: Naudodami privalomus laukus galite pagerinti kodo skaitomumą ir supratimą.

Kaip apibrėžti būtinus laukus Pydantic

„Pydantic“ yra trys būdai, kaip apibrėžti lauką kaip būtiną lauką. Išsamiai panagrinėkime kiekvieną iš jų.







Anotacijų naudojimas

Paprasčiausias būdas apibrėžti būtiną lauką „Pydantic“ yra naudoti komentarus. Naudodami anotacijas, sintaksinių metaduomenų tipą, galite pridėti daugiau informacijos apie klasių kintamuosius ir atributus. Programoje „Pydantic“ komentarai naudojami numatomam lauko duomenų tipui nurodyti, o pagal numatytuosius nustatymus visi anotuoti laukai laikomi privalomais, kol nepadarote lauko ar laukų neprivalomo.



pydantiškas importuoti Bazinis modelis

klasė Asmuo ( Bazinis modelis ) :

pilnas vardas: g

aukštis: plūdė

paštu : g

Šiame pavyzdyje visi laukai full_name, ūgis ir el. pašto adresas yra privalomi. Jei sukursite asmens klasės egzempliorių nepateikdami šių laukų verčių, „Pydantic“ pateiks patvirtinimo klaidą, nurodydama, kad trūksta būtinų laukų.



bandyti :

asmens_duomenys = {

'aukštis' : 5.8 ,

}

asmuo = Asmuo ( **asmens_duomenys )

išskyrus ValueError kaip Tai yra:

spausdinti ( tai yra )





Šiame pavyzdyje trūksta lauko full_name ir aukščio lauko. Abu šie laukai yra būtini, o ValidationError pateikia aiškią informaciją apie trūkstamus laukus.

Naudojant elipsę (…)

Kitas būdas deklaruoti lauką, kaip reikalaujama Pydantic, yra naudoti elipsę ( ). Tai aiškus „Pydantic“ pasiūlytas būdas pažymėti lauką pagal poreikį.



pydantiškas importuoti Bazinis modelis

klasė Produktas ( Bazinis modelis ) :

vardas: g = ...

kaina : plūdė = ...

apibūdinimas : g = ...

Šiame pavyzdyje visi laukai pavadinimas, kaina ir aprašymas yra apibrėžti kaip reikalaujama naudojant elipsę. Šis metodas leidžia aiškiai ir matomai, kad tam tikrų laukų negalima praleisti kuriant produkto klasės egzempliorių.

bandyti :

produkto_duomenys = {

'vardas' : 'Mobilusis telefonas' ,

'apibūdinimas' : 'Išmanusis telefonas su 16 Gb RAM' ,

}

produktas = Produktas ( **produkto_duomenys )

išskyrus ValueError kaip Tai yra:

spausdinti ( tai yra )


Šiame pavyzdyje kainos lauko nėra, o ValidationError aiškiai nurodo trūkstamą privalomą lauką.

Lauko funkcijos naudojimas

„Pydantic“ modulio funkcija „Field“ suteikia papildomų galimybių pritaikyti lauko patvirtinimą ir metaduomenis. Naudodami funkciją Laukas galite deklaruoti privalomus laukus ir taikyti papildomas patvirtinimo taisykles.

Štai kaip galite apibrėžti būtinus laukus naudodami lauko funkciją:

pydantiškas importuoti Bazinis modelis , Laukas

klasė Adresas ( Bazinis modelis ) :

gatvė: g = Laukas ( ... , apibūdinimas = 'Gatvės adresas' )

miestas: g = Laukas ( ... )

pašto kodas: g = Laukas ( ... )

Šiame pavyzdyje mes naudojame funkciją Laukas, norėdami apibrėžti privalomus laukus street, city ir zip_code, kartu su papildomomis patvirtinimo taisyklėmis ir aprašymais. Elipsė „…“ rodo, kad šie laukai turi būti apibrėžti kaip privalomi laukai.

bandyti :

adreso_duomenys = {

'gatvė' : „Pagrindinė gatvė 111“ ,

'pašto kodas' : '123456'

}

adresu = Adresas ( **adreso_duomenys )

išskyrus ValueError kaip Tai yra:

spausdinti ( tai yra )

Šiame pavyzdyje miesto lauko nėra, o ValidationError pateikia informaciją apie trūkstamą privalomą lauką.

Privalomi laukai gali būti patvirtinti naudojant kitas Pydantic funkcijas, pvz., apribojimus ir tipus. Pavyzdžiui, galite nurodyti, kad pavadinimo lauke turi būti bent 5 simbolių eilutė. Norėdami tinkinti privalomų laukų veikimą, galite naudoti lauko dekoratorių. Pavyzdžiui, galite nurodyti numatytąją lauko reikšmę arba pranešimą, kuris bus rodomas, jei laukui nesuteikta reikšmė.

Kelių metodų naudojimas reikalaujamiems laukams apibrėžti viename pydantiniame modelyje

Viename Pydantic modelyje galite naudoti kelis būtinų laukų apibrėžimo metodus. Pavyzdžiui, kai kuriems laukams galite naudoti komentarus, elipsę ( ) kitiems, o funkcija Laukas papildomam tinkinimui. „Pydantic“ leidžia pasirinkti geriausią kodo organizavimo ir skaitomumo nuostatų metodą. Apsvarstykite šį pavyzdį:

pydantiškas importuoti Bazinis modelis , Laukas

klasė Darbuotojas ( Bazinis modelis ) :

vardas: g

skyrius: g =

atlyginimas: plūdė = Laukas ( )

Šiame pavyzdyje privaloma naudoti visus laukus. Reikalingiems laukams apibrėžti naudojome tris skirtingus metodus. Vardo lauke naudojama anotacija, skyriuje – elipsė, o atlyginimo lauke – funkcija Laukas.

Patarimai, kaip naudoti privalomus laukus

Norint sukurti sklandų ir prižiūrimą kodą, būtina laikytis tam tikros geros praktikos apibrėžiant būtinus laukus „Pydantic“. Šie patarimai padės apibrėžti būtinus Pydantic laukus:

  1. Naudokite aiškius ir aprašomus laukų pavadinimus : pasirinkite prasmingus savo laukų pavadinimus, kurie aiškiai nurodytų jų paskirtį. Tai padeda kitiems kūrėjams žinoti, kokių duomenų reikia, ir sumažina būtinų laukų praleidimo tikimybę.
  2. Pateikite informacinius laukų aprašymus : kai naudojate funkciją Laukas privalomiems laukams apibrėžti, pateikite aprašomuosius aprašymus, paaiškinančius duomenų tikslą ir numatomą formatą.
  3. Su grupe susiję laukai : jei jūsų duomenų modelyje yra daug laukų, apsvarstykite galimybę sugrupuoti susijusius laukus į įdėtas struktūras. Tai gali padėti jūsų kodui būti aiškesniam ir lengviau tvarkyti privalomus laukus.
  4. Privalomiems laukams naudokite tinkintus pranešimus: Pagal numatytuosius nustatymus „Pydantic“ iškels „ValueError“ išimtį, jei būtinam laukui nebus suteikta reikšmė. Galite tinkinti klaidos pranešimą nurodydami pranešimo argumentą lauko dekoratoriui.

Išvada

Pagal numatytuosius nustatymus „Pydantic“ sukuria reikiamus laukus. Tačiau galite aiškiai apibrėžti lauką kaip privalomus laukus. Deklaruodami laukus, kaip reikalaujama, užtikrinate, kad duomenų modeliai yra tikslūs, išsamūs ir atitinka jūsų reikalavimus. Šiame įraše apžvelgėme tris skirtingus metodus, kaip apibrėžti būtinus Pydantic laukus, ty anotacijas, elipsę (...) ir lauko funkciją. Be to, peržiūrėjome keletą rekomenduojamų būtinų laukų naudojimo praktikos, kad galėtumėte efektyviai nurodyti laukus savo duomenų modelyje.