Hvordan bruke Django -serialisatorer

Hvordan bruke Django -serialisatorer
Serializer brukes i Django for å konvertere modellforekomstene eller spørringene til Python -støttede datatyper som enkelt kan gjengis til JSON, XML eller andre formater. Deserialiseringen kan også gjøres av serialisatorer for å få tilbake de originale dataene fra de serialiserte dataene. Denne funksjonen er tilgjengelig i Django Rest Framework. Så brukerne må installere dette rammeverket for å bruke serialisatorene. Enhver webside på nettstedet kan inneholde HTML, CSS og data fra databasetabellene. Men API forstår ikke denne typen innhold, og den kan bare forstå rå data, det vil si JSON -data. Hvordan serialisatorene kan brukes til å konvertere modellforekomsten til JSON -format har vist i denne opplæringen.

Forutsetninger:

Før du øver skriptet til denne opplæringen, må du fullføre følgende oppgaver.

  1. Installer Django versjon 3+ på Ubuntu 20+ (helst)
  2. Lag et Django -prosjekt
  3. Kjør Django -serveren for å sjekke at serveren fungerer som den skal eller ikke.

Sett opp en Django -app for serialisatorer:

Kjør følgende kommando for å opprette en Django -app som heter SerialApp.

$ Python3 Administrer.Py StartApp SerialApp

Kjør følgende kommando for å opprette brukeren for tilgang til Django -databasen. Hvis du har opprettet brukeren før, trenger du ikke kjøre kommandoen.

$ Python3 Administrer.Py CreateSuperuser

Kjør følgende kommando for å installere Django Rest Framework.

$ pip3 installer djangorestframework

Legg til REST_Framework og App -navn i Installert_app del av Innstillinger.py fil.

Installert_apps = [
.. .
'REST_FRAMEWORK',
'SerialApp'
]

Lag en modell for databasetabellen:

Åpne modeller.py fil fra SerialApp mappe og legg til følgende skript for å definere strukturen til Kunder bord. Kunde Klasse er definert for å lage en tabell som heter Kunder med Navn, adresse, e -post, kontakt_no, og opprettet Enger. Her, Navn, e -post, og kontaktnummer Felt vil lagre karakterdata, adressen feltet vil lagre tekstdataene, og opprettet Feltet vil lagre datetime -dataene.

modeller.py

# Importer modellmodulen
Fra Django.DB importmodeller
# Definer modellklassen for kundens tabell
Klassekunde (modeller.Modell):
Navn = modeller.Charfield (max_length = 100)
adresse = modeller.Tekstfelt()
E -post = modeller.Charfield (Max_Length = 50)
Kontakt_no = modeller.Charfield (max_length = 20)
opprettet = modeller.DateTimefield (auto_now_add = true)

Kjør Makemigrasjoner Kommando for å lage en ny migrasjon basert på endringene som er gjort av modellene.

$ Python3 Administrer.Py Makemigrations SerialApp

Kjør migrere Kommando for å utføre SQL -kommandoene og opprette alle tabeller i databasen definert i modeller.py fil.

$ Python3 Administrer.py migrerer

Endre innholdet i admin.py fil med følgende innhold. Her, kunden klasse av modellene er registrert ved å bruke registeret () metode for å vise Kunder Tabeller i Django Administration Dashboard.

admin.py

# Importer administratormodul
Fra Django.bidra importadministrator
# Importer kundemodellen
fra .Modeller importerer kunde
# Registrer kundemodellen
admin.nettstedet.Register (kunde)

URLS.py

Fra Django.URLS importerer bane
Fra Django.bidra importadministrator
urlpatterns = [
# Definer banen for admin
bane ('admin/', admin.nettstedet.URL),
]

Legg til poster i tabellen:

Åpne Django -administrasjonssiden og legg til noen poster i Kunder Tabell som vises i nettleseren i JSON -format. Her har tre poster blitt satt inn.

Endre visningene.PY:

Åpne utsikt.py fil fra SerialApp og erstatt innholdet med følgende skript. Kundeliste Klasse er definert for å serialisere alle kundenes poster og returnere dataene til nettleseren i JSON -format. CustomerDetail Klasse er definert for å serialisere den aktuelle kundeposten basert på ID -verdien og returnere nettleserens data i JSON -format. Kundersializer er en serialiserende fil som er opprettet i neste del av denne opplæringen.

utsikt.py

# Importer generika fra Django Rest Framework
fra REST_FRAMEWORK IMPORT GENERICS
# Importer kundemodell
fra .Modeller importerer kunde
# Importer kunderserializer fra serialisatorer
fra .Serialisatorer importerer kundersializer
# Definer klasse for å konvertere alle poster over kundetabellen til JSON
Klasse kundeliste (generikk.ListCreateApIVIEW):
QuerySet = Kunde.objekter.alle()
Serializer_Class = KunderSerializer
# Definer klasse for å konvertere den spesielle posten til kundetabellen til JSON
klasse CustomerDetail (generics.Henteupdatedestroyapiview):
QuerySet = Kunde.objekter.alle()
Serializer_Class = KunderSerializer

Opprett serialisator:

Skape Serialisatorer.py fil på samme sted utsikt.py fil med følgende skript. Modellerializer Klasse brukes her for å lage Kundersializer Klasse som returnerer serialisatorklassen med feltet til kundemodellen. Kundemodellfeltene som vil bli konvertert til JSON -format er nevnt i Meta klasse.

Serialisatorer.py

# Import serialisatorer modul fra Django Rest Framework
Fra REST_FRAMEWORK IMPORT SERIALISERERE
# Importer kundemodell
fra .Modeller importerer kunde
# Definer den tilpassede serialisatorklassen for å konvertere kundemodellfeltene til JSON
Klassekunder.Modellerializer):
Klassemeta:
modell = kunde
felt = ('id', 'navn', 'adresse', 'e -post', 'contact_no')

Endre nettadressene.PY -fil:

Endre innholdet i URLS.py fil med følgende skript. I manuset, 'kunder/'Sti er definert for å vise alle poster av Kunder Tabell i JSON -format, og 'Kunder //'bane er definert for å vise de spesielle dataene til Kunder Tabell i JSON -format basert på ID -verdi.

URLS.py

# Importer administratormodul
Fra Django.bidra importadministrator
# Importer bane og inkluder modul
Fra Django.URLS importerer bane
# Importer visningene
Fra SerialApp importvisninger
# Import format_suffix_patterns fra Django Rest Framework
Fra REST_FRAMEWORK.urlpatterns import format_suffix_patterns
urlpatterns = [
# Definer banen for admin
bane ('admin/', admin.nettstedet.URL),
# Definer banen for å få alle kundedata i JSON -format
bane ('kunder/', visninger.Kundeliste.as_view ()),
# Definer banen for å få de aktuelle kundedataene basert på ID i JSON -format
bane ('kunder //', visninger.CustomerDetail.as_view ()),
]
urlpatterns = format_suffix_patterns (urlpatterns)

Alle poster over kundens tabell vil bli vist i JSON -format hvis følgende URL vil utføre.

http: // localhost: 8000/kunder

Registreringen til den andre kunden vil bli vist i JSON -format hvis følgende URL utfører.

http: // localhost: 8000/kunder/2

Konklusjon:

Bruken av serialisatorer i Django -applikasjonen for å konvertere modellforekomsten til JSON -format har vist i denne opplæringen ved å bruke et enkelt skript. Django -brukerne vil forstå formålet med å bruke serialisatorer og bruke dem i applikasjonen deres om nødvendig etter å ha lest denne opplæringen.