Django

Django-serializers gebruiken

Django-serializers gebruiken
Serializer wordt in Django gebruikt om de modelinstanties of querysets om te zetten in door Python ondersteunde gegevenstypen die eenvoudig kunnen worden weergegeven in JSON, XML of andere formaten. De deserialisatie kan ook worden gedaan door serializers om de originele gegevens van de geserialiseerde gegevens terug te krijgen. Deze functie is beschikbaar in Django REST Framework. De gebruikers moeten dit framework dus installeren om de serializers te gebruiken. Elke webpagina van de website kan HTML, CSS en gegevens uit de databasetabellen bevatten. Maar de API begrijpt dit soort inhoud niet en kan alleen de onbewerkte gegevens begrijpen, dat wil zeggen JSON-gegevens. Hoe de serializers kunnen worden gebruikt om de modelinstantie naar JSON-indeling te converteren, wordt in deze zelfstudie getoond.

Vereisten:

Voordat u het script van deze tutorial oefent, moet u de volgende taken uitvoeren:.

  1. Installeer de Django versie 3+ op Ubuntu 20+ (bij voorkeur)
  2. Een Django-project maken
  3. Voer de Django-server uit om te controleren of de server goed werkt of niet.

Stel een Django-app in voor serializers:

Voer de volgende opdracht uit om een ​​Django-app met de naam te maken seriële app.

$ python3 beheren.py startapp seriële app

Voer de volgende opdracht uit om de gebruiker te maken voor toegang tot de Django-database:. Als je de gebruiker eerder hebt gemaakt, hoef je de opdracht niet uit te voeren.

$ python3 beheren.py createsuperuser

Voer de volgende opdracht uit om Django REST Framework te installeren:.

$ pip3 installeer djangorestframework

Voeg de rest_framework en app-naam toe in de INSTALLED_APP deel van de instellingen.py het dossier.

INSTALLED_APPS = [
… .
'rest_framework',
'serieapp'
]

Maak een model voor de databasetabel:

Open de modellen.py bestand van de seriële app map en voeg het volgende script toe om de structuur van te definiëren klanten tafels. Klant class is gedefinieerd om een ​​tabel te maken met de naam klanten met naam, adres, e-mail, contact_no, en gemaakt velden. Hier, naam, e-mail, en contact_no velden zullen karaktergegevens opslaan, het adres veld zal de tekstgegevens opslaan, en gemaakt veld slaat de DateTime-gegevens op.

modellen.py

# Importeer de modellenmodule
van django.db-importmodellen
# Definieer de modelklasse voor de klantentabel
klasse Klant (modellen).Model):
naam = modellen.CharField(max_length=100)
adres = modellen.TekstVeld()
e-mail = modellen.CharField(max_length=50)
contact_no = modellen.CharField(max_length=20)
gemaakt = modellen.DateTimeField(auto_now_add=True)

Voer de ... uit migraties opdracht om een ​​nieuwe migratie te maken op basis van de wijzigingen die door de modellen zijn aangebracht.

$ python3 beheren.py makemigraties serialapp

Voer de ... uit migreren commando om de SQL-commando's uit te voeren en alle tabellen te maken in de database gedefinieerd in de in modellen.py het dossier.

$ python3 beheren.py migreren

Wijzig de inhoud van de beheerder.py bestand met de volgende inhoud:. Hier, de klant klasse van de modellen wordt geregistreerd met behulp van het register() methode om de . weer te geven klanten tabellen in het Django-beheerdashboard.

beheerder.py

# Beheermodule importeren
van django.bijdrage import beheerder
# Importeer het klantmodel
van .modellen importeren Klant:
# Registreer het klantmodel
beheerder.website.registreren (klant)

URL's.py

van django.URL-importpad
van django.bijdrage import beheerder
urlpatronen = [
# Definieer het pad voor admin
pad('admin/', beheerder.website.URL's),
]

Voeg records toe aan de tabel:

Open de Django-beheerpagina en voeg enkele records toe aan de klanten tabel weergegeven in de browser in JSON-indeling. Hier zijn drie records ingevoegd.

Wijzig de weergaven.py:

Open de keer bekeken.py bestand van de seriële app en vervang de inhoud door het volgende script:. Klantenlijst class is gedefinieerd om alle records van de klant te serialiseren en de gegevens terug te sturen naar de browser in JSON-indeling. KlantDetail class is gedefinieerd om het specifieke klantrecord te serialiseren op basis van de ID-waarde en de gegevens van de browser in JSON-indeling te retourneren. KlantSerializer is een serializers-bestand dat is gemaakt in het volgende deel van deze tutorial.

keer bekeken.py

# Importeer generieke geneesmiddelen uit het Django REST Framework
van rest_framework importeer generieke geneesmiddelen
# Klantmodel importeren
van .modellen importeren Klant:
# Importeer CustomerSerializer van serializers
van .serializers importeren CustomerSerializer
# Definieer klasse om alle records van de klantentabel om te zetten in JSON
klasse Klantenlijst (generieken).ListCreateAPIView):
queryset = Klant.voorwerpen.alle()
serializer_class = CustomerSerializer
# Definieer klasse om het specifieke record van de klantentabel om te zetten in JSON
klasse KlantDetail (generieken).RetrieveUpdateDestroyAPIView):
queryset = Klant.voorwerpen.alle()
serializer_class = CustomerSerializer

Serializer maken:

Aanmaken serializers.py bestand op dezelfde locatie als de keer bekeken.py bestand met het volgende script. ModelSerializer class wordt hier gebruikt om te creëren KlantSerializer class die de klasse serializers retourneert met de velden van het Customer-model. De klantmodelvelden die naar JSON-indeling worden geconverteerd, worden vermeld in de Meta klasse.

serializers.py

# Importeer serializers-module uit Django REST Framework
van rest_framework importeer serializers
# Klantmodel importeren
van .modellen importeren Klant:
# Definieer de custom serializers-klasse om de klantmodelvelden om te zetten in JSON
klasse CustomerSerializer (serializers).ModelSerializer):
klasse Meta:
model = klant
velden = ('id', 'naam', 'adres', 'e-mail', 'contact_nr')

Pas de URL's aan.py-bestand:

Wijzig de inhoud van de URL's.py bestand met het volgende script. In het script staat de 'klanten/' pad is gedefinieerd om alle records van de klanten tabel in JSON-indeling, en de 'klanten//' pad is gedefinieerd om de specifieke gegevens van de . weer te geven klanten tabel in JSON-indeling op basis van ID-waarde.

URL's.py

# Beheermodule importeren
van django.bijdrage import beheerder
# Pad importeren en module opnemen
van django.URL-importpad
# Importeer de weergaven
van seriële app-importweergaven
# Importeer format_suffix_patterns van Django REST Framework
van rest_framework.urlpatterns import format_suffix_patterns
urlpatronen = [
# Definieer het pad voor admin
pad('admin/', beheerder.website.URL's),
# Definieer het pad om alle klantgegevens in JSON-indeling te krijgen
pad('klanten/', weergaven.Klantenlijst.as_view()),
# Definieer het pad om de specifieke klantgegevens te verkrijgen op basis van ID in JSON-indeling
pad('klanten//', weergaven.KlantDetail.as_view()),
]
urlpatterns = format_suffix_patterns(urlpatterns)

Alle records van de klantentabel worden weergegeven in JSON-indeling als de volgende URL wordt uitgevoerd:.

http://localhost:8000/klanten

Het record van de tweede klant wordt weergegeven in JSON-indeling als de volgende URL wordt uitgevoerd:.

http://localhost:8000/customers/2

Conclusie:

Het gebruik van serializers in de Django-toepassing om de modelinstantie naar JSON-indeling te converteren, is in deze zelfstudie aangetoond met behulp van een eenvoudig script. De Django-gebruikers zullen het doel van het gebruik van serializers begrijpen en deze indien nodig in hun toepassing toepassen na het lezen van deze tutorial.

Top 10 spellen om te spelen op Ubuntu
Het Windows-platform is een van de dominante platforms voor gaming geweest vanwege het enorme percentage games dat tegenwoordig wordt ontwikkeld om Wi...
5 beste arcade-spellen voor Linux
Tegenwoordig zijn computers serieuze machines die worden gebruikt om te gamen. Als je de nieuwe hoge score niet kunt halen, weet je wat ik bedoel. In ...
Strijd om Wesnoth 1.13.6 Ontwikkeling vrijgegeven
Strijd om Wesnoth 1.13.6 die vorige maand werd uitgebracht, is de zesde ontwikkelingsrelease in de 1.13.x-serie en het levert een aantal verbeteringen...