Izpildiet šo soli pa solim sniegto rokasgrāmatu, un jūs iegūsit CRUD API kodolu, uz kuru varēsit pilnveidot.

Django Rest Framework (DRF) ir Django ietvars, kas piedāvā atbalstu REST API izveidei. Tāpat kā Django, arī DRF ļauj veidot API skatus, izmantojot uz funkcijām vai klasēm balstītus skatus.

Lai gan sākumā var būt grūti strādāt ar klases skatījumiem, tie piedāvā tādas priekšrocības kā labāka koda struktūra, atkārtota izmantošana, pārmantojamība un kodolīgums.

Izveidojiet Recepšu pārvaldnieka API, izmantojot Django REST Framework

Recepšu pārvaldnieka lietotne ir lielisks veids, kā uzzināt par klases skatījumiem DRF. Tādas funkcijas kā recepšu pievienošana, dzēšana un rediģēšana palīdzēs jums saprast, kā ieviest CRUD (Izveidot, lasīt, atjaunināt, dzēst) darbības. Tālāk norādītās darbības iemācīs jums izveidot CRUD API.

Šīs rokasgrāmatas kodu varat atrast vietnē GitHub.

1. darbība. Instalējiet Django REST Framework un konfigurējiet savu projektu

  1. Izveidojiet savam projektam virtuālo vidi un instalējiet šādas atkarības:
    pip install django djangorestframework
  2. Izveidojiet Django projektu ar nosaukumu kodols ar šādu komandu:
    django-admin startproject core .
  3. Izveidojiet lietotni ar nosaukumu receptes_manager:
    python manage.py startapp recipe_manager
  4. Atver savu core/settings.py failu un dodieties uz INSTALLED_APPS saraksts, lai reģistrētu savas lietotnes:
    INSTALLED_APPS = [
    # custom apps
    'rest_framework',
    'recipe_manager',
    ]

2. darbība. Izveidojiet modeli savai receptes lietotnei

  1. Atver savu recepte_manager/models.py failu un izveidojiet savas lietotnes modeli. Šeit ir receptes modeļa pamata piemērs:
    # models.py
    from django.db import models

    classRecipe(models.Model):
    recipe_name = models.CharField(max_length=255)
    ingredients = models.TextField()
    instructions = models.TextField()

  2. Izveidojiet migrāciju un migrējiet savu modeli datu bāzē ar šo komandu:
    python manage.py makemigrations && python manage.py migrate

3. darbība. Izveidojiet savai lietotnei seriālizatoru

Serializators ir Django komponents, kas palīdz pārveidot sarežģītus datu tipus, piemēram, vaicājumu kopu, formātā, kuru varat renderēt, piemēram, JSON vai XML, un otrādi.

Lai izveidotu serializētāju, rīkojieties šādi:

  1. Izveidojiet failu ar nosaukumu recepte_manager/serializers.py.
  2. Importēt seriālisti modulis, kā arī modelis, kuru vēlaties serializēt:
    # serializers.py
    from rest_framework import serializers

    from .models import Recipe # the model to serialize

  3. Tajā pašā failā izveidojiet savam modelim serializatora klasi un definējiet Meta klase tajā:
    # serializers.py
    classRecipeSerializer(serializers.ModelSerializer):
    classMeta:
    model = Recipe
    fields = ('recipe_name', 'ingredients', 'instructions')
    Šajā kodā Meta klase definē serializējamo modeli un konkrētos laukus, kas serializētājam jāapstrādā. The lauki atribūts var būt saraksts vai virkne. Ja vēlaties serializēt visus sava modeļa laukus, varat to izdarīt šādi:
    classMeta:
    fields = "__all__"

4. darbība. Uzrakstiet skatu operācijai CREATE

Varat izveidot savai lietotnei klases skatus, importējot Django pieejamo vispārējo skatu. Par šiem skatiem varat lasīt no Django oficiālā dokumentācija. Lai ieviestu CRUD darbību CREATE, jums vajadzētu importēt Izveidot APIView. Jums vajadzētu arī importēt savu serializatoru un modeli:

# views.py
from rest_framework.generics import CreateAPIView

from .models import Recipe
from .serializers import RecipeSerializer

Lai ieviestu darbību CREATE, jums tikai jānorāda serializators, kas jūsu skatam būtu jāizmanto. Šeit ir piemērs:

# Create view
classRecipeCreateView(CreateAPIView):
serializer_class = RecipeSerializer

Izmantojot šo iestatījumu, varat veikt POST pieprasījumus savai lietotnei.

5. darbība: uzrakstiet skatu operācijai READ

  1. Lai ieviestu darbību READ, importējiet ListAPIView saviem uzskatiem. Šis skats palīdz uzskaitīt modeļa objektus:
    # views.py
    from rest_framework.generics import CreateAPIView, ListAPIView
  2. Izveidojiet klasi saviem skatiem un norādiet izmantojamo serializētāju un vaicājumu kopu:
    # List view
    classRecipeListView(ListAPIView):
    serializer_class = RecipeSerializer
    queryset = Recipe.objects.all()
  3. Izveidojiet skatu, lai lasītu konkrētu recepti. Lai to izdarītu, jums ir nepieciešams RetrieveAPIView tāpēc pievienojiet to savam importēto preču sarakstam:
    # views.py
    from rest_framework.generics import CreateAPIView, ListAPIView, RetrieveAPIView
    Pēc tam izveidojiet vajadzīgo skatu:
    # Retrieve view
    classRecipeRetrieveView(RetrieveAPIView):
    serializer_class = RecipeSerializer
    queryset = Recipe.objects.all()

6. darbība: ierakstiet skatus operācijām UPDATE un DELETE

Lai ieviestu darbības UPDATE un DELETE, jums ir nepieciešams Atjauniniet APIView un DestroyAPIView attiecīgi importējiet tos:

from rest_framework.generics import (
ListAPIView,
CreateAPIView,
RetrieveAPIView,
UpdateAPIView, # new
DestroyAPIView, # new
)

Pēc tam izveidojiet skatus tāpat kā iepriekš. Šoreiz jūsu uzskati tiks mantoti no Atjauniniet APIView un DestroyAPIView, attiecīgi:

# Update view
classRecipeUpdateView(UpdateAPIView):
serializer_class = RecipeSerializer
queryset = Recipe.objects.all()

# Delete view
classRecipeDeleteView(DestroyAPIView):
serializer_class = RecipeSerializer
queryset = Recipe.objects.all()

7. darbība. Izveidojiet vietrāžus URL savai lietotnei

  1. Pievienojiet šo kodu core/urls.py lai konfigurētu savus URL:
    from django.urls import path, include

    urlpatterns = [
    path('api/', include('recipe_manager.urls'))
    ]

  2. Pievienojiet tālāk norādīto kodu savam recepte_manager/urls.py fails:
    from django.urls import path
    from. import views

    urlpatterns = [
    # List view (Read all)
    path('recipes/', views.RecipeListView.as_view(), name='recipe-list'),

    # Create view
    path('recipes/create/', views.RecipeCreateView.as_view(), name='recipe-create'),

    # Retrieve view (Read one)
    path('recipes//', views.RecipeRetrieveView.as_view(), name='recipe-retrieve'),

    # Update view
    path('recipes//update/', views.RecipeUpdateView.as_view(), name='recipe-update'),

    # Delete view
    path('recipes//delete/', views.RecipeDeleteView.as_view(), name='recipe-destroy'),
    ]

    No iepriekš minētā koda jūs pamanīsit, ka uz klasēm balstītie skati izmanto kā_skatījums() funkciju, lai izveidotu savus URL modeļus. Varat arī lasīt par atšķirības starp projektu un lietotni Django ja jūs mulsina to lietošana šeit.

8. darbība: pārbaudiet savus API galapunktus

Projekta direktorijā palaidiet tālāk norādīto.

python manage.py runserver

Tam vajadzētu palaist jūsu serveri, veikt dažas pārbaudes un izdrukāt URL, ar kuru varat tam piekļūt.

Tagad varat pārbaudīt savus API galapunktus, pārejot uz attiecīgajiem URL (piem., /api/recipes/) un nosūtīšanu HTTP pieprasījuma metodes CRUD operācijām. Jums vajadzētu redzēt šādu noklusējuma saskarni:

Tā vietā, lai izmantotu pārlūkprogrammu, varat pārbaudiet savu API ar Postman.

DRY praktizēšana, veidojot CRUD API

DRY (Neatkārtojiet sevi) ir a jums vajadzētu pieņemt programmēšanas principu lai uzlabotu sava koda kvalitāti.

Lai gan iepriekš rakstītie skati darbojas labi, jūs varat izvairīties no daudziem atkārtojumiem, izmantojot ListCreateAPIView un RetrieveUpdateDestroyAPIView vispārīgi uzskati.

ListCreateAPIView apvieno ListAPIView un Izveidot APIView, savukārt RetrieveUpdateDestroyAPIView apvieno RetrieveAPIView, Atjauniniet APIView, un DestroyAPIView.

Varat modificēt savus iepriekšējos skatus, lai tie izskatītos šādi:

from rest_framework.generics import ListCreateAPIView, RetrieveUpdateDestroyAPIView

from .models import Recipe
from .serializers import RecipeSerializer

classRecipeListCreateAPIView(ListCreateAPIView):
serializer_class = RecipeSerializer
queryset = Recipe.objects.all()

classRecipeRetrieveUpdateDeleteAPIView(RetrieveUpdateDestroyAPIView):
serializer_class = RecipeSerializer
queryset = Recipe.objects.all()

Šī pieeja samazina kopējo koda daudzumu.

Varat izveidot vietrāžus URL jaunajiem skatiem šādi:

from django.urls import path
from .views import RecipeListCreateAPIView, RecipeRetrieveUpdateDeleteAPIView

urlpatterns = [
# List and Create view
path('recipes/', RecipeListCreateAPIView.as_view(), name='recipe-list-create'),

# Retrieve, Update, and Delete view
path('recipes//', RecipeRetrieveUpdateDeleteAPIView.as_view(), name='recipe-retrieve-update-destroy'),
]

Šos galapunktus varat pārbaudīt ar Postman vai jebkuru citu API testēšanas rīks tu dod priekšroku.

Vispārīgi klases skatījumi atvieglo jūsu darbu

Kā redzams iepriekš, vispārīgi uz klasēm balstīti skati var paātrināt skatu izveides procesu. Tagad jums ir jāmanto tikai jūsu lietošanas gadījumam piemērotais APIView.

Jums arī jāpārliecinās, ka izmantojat labu programmēšanas praksi, lai nerastos slikta koda.