Пратите овај водич корак по корак и имаћете језгро ЦРУД АПИ-ја на којем можете даље да градите.

Дјанго Рест Фрамеворк (ДРФ) је Дјанго оквир који нуди подршку за прављење РЕСТ АПИ-ја. Као и Дјанго, ДРФ вам омогућава да изградите своје АПИ погледе са приказима заснованим на функцијама или класама.

Иако у почетку може бити тешко радити са погледима заснованим на класама, они нуде предности попут боље структуре кода, поновне употребе, наслеђивања и сажетости.

Направите АПИ за управљање рецептима са Дјанго РЕСТ Фрамеворк-ом

Апликација за управљање рецептима је одличан начин да научите о погледима заснованим на класама у ДРФ-у. Функције као што су додавање, брисање и уређивање рецепата помоћи ће вам да разумете како да примените ЦРУД (Креирање, читање, ажурирање, брисање) операције. Следећи кораци ће вас научити како да креирате ЦРУД АПИ.

Код за овај водич можете пронаћи на ГитХуб.

Корак 1: Инсталирајте Дјанго РЕСТ Фрамеворк и конфигуришите свој пројекат

  1. Креирајте виртуелно окружење за свој пројекат и инсталирајте следеће зависности:
    pip install django djangorestframework
  2. instagram viewer
  3. Направите Дјанго пројекат под називом језгро са следећом командом:
    django-admin startproject core .
  4. Направите апликацију под називом реципе_манагер:
    python manage.py startapp recipe_manager
  5. Отвори свој цоре/сеттингс.пи датотеку и идите на ИНСТАЛЛЕД_АППС листа за регистрацију ваших апликација:
    INSTALLED_APPS = [
    # custom apps
    'rest_framework',
    'recipe_manager',
    ]

Корак 2: Направите модел за своју апликацију за рецепт

  1. Отвори свој реципе_манагер/моделс.пи датотеку и креирајте модел за своју апликацију. Ево основног примера модела рецепта:
    # models.py
    from django.db import models

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

  2. Креирајте миграције и мигрирајте свој модел у базу података помоћу ове команде:
    python manage.py makemigrations && python manage.py migrate

Корак 3: Направите серијализатор за своју апликацију

Сериализатор је Дјанго компонента која вам помаже да конвертујете сложене типове података, као што је скуп упита, у формат који можете да прикажете, као што је ЈСОН или КСМЛ, и обрнуто.

Да бисте направили серијализатор, следите ове кораке:

  1. Креирајте датотеку под називом реципе_манагер/сериализерс.пи.
  2. Увезите серијализатори модул као и модел који желите да серијализирате:
    # serializers.py
    from rest_framework import serializers

    from .models import Recipe # the model to serialize

  3. У истој датотеци креирајте класу серијализатора за свој модел и дефинишите Мета разред у њему:
    # serializers.py
    classRecipeSerializer(serializers.ModelSerializer):
    classMeta:
    model = Recipe
    fields = ('recipe_name', 'ingredients', 'instructions')
    У овом коду, Мета класа дефинише модел за серијализацију и специфична поља која серијализатор треба да обрађује. Тхе поља атрибут може бити листа или тупле. Ако желите да серијализирате сва поља у свом моделу, то можете учинити овако:
    classMeta:
    fields = "__all__"

Корак 4: Напишите приказ за операцију ЦРЕАТЕ

Можете да креирате приказе засноване на класама за своју апликацију увозом генеричког приказа доступног у Дјангу. О овим погледима можете прочитати од Дјанго-ова званична документација. Да бисте имплементирали операцију ЦРЕАТЕ ЦРУД-а, требало би да увезете ЦреатеАПИВиев. Такође би требало да увезете свој серијализатор и модел:

# views.py
from rest_framework.generics import CreateAPIView

from .models import Recipe
from .serializers import RecipeSerializer

Да бисте имплементирали операцију ЦРЕАТЕ, потребно је само да наведете серијализатор који ваш поглед треба да користи. Ево примера:

# Create view
classRecipeCreateView(CreateAPIView):
serializer_class = RecipeSerializer

Помоћу овог подешавања можете да шаљете ПОСТ захтеве својој апликацији.

Корак 5: Напишите приказ за операцију РЕАД

  1. Да бисте имплементирали операцију РЕАД, увезите ЛистАПИВиев на своје ставове. Овај приказ вам помаже да наведете објекте модела:
    # views.py
    from rest_framework.generics import CreateAPIView, ListAPIView
  2. Направите класу за своје погледе и наведите серијализатор и скуп упита који ће се користити:
    # List view
    classRecipeListView(ListAPIView):
    serializer_class = RecipeSerializer
    queryset = Recipe.objects.all()
  3. Направите приказ да бисте прочитали одређени рецепт. Да бисте то урадили, потребан вам је РетриевеАПИВиев па га додајте на своју листу увоза:
    # views.py
    from rest_framework.generics import CreateAPIView, ListAPIView, RetrieveAPIView
    Затим креирајте поглед који вам је потребан:
    # Retrieve view
    classRecipeRetrieveView(RetrieveAPIView):
    serializer_class = RecipeSerializer
    queryset = Recipe.objects.all()

Корак 6: Напишите приказе за операције УПДАТЕ и ДЕЛЕТЕ

Да бисте имплементирали операције УПДАТЕ и ДЕЛЕТЕ, потребан вам је УпдатеАПИВиев и ДестроиАПИВиев респективно, па их увезите:

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

Затим креирајте приказе, као што сте радили раније. Овог пута, ваши ставови ће наследити од УпдатеАПИВиев и ДестроиАПИВиев, редом:

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

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

Корак 7: Креирајте УРЛ-ове за своју апликацију

  1. Додајте овај код у цоре/урлс.пи да конфигуришете своје УРЛ адресе:
    from django.urls import path, include

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

  2. Додајте следећи код у свој реципе_манагер/урлс.пи фајл:
    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'),
    ]

    Из горњег кода ћете приметити да погледи засновани на класама користе ас_виев() функцију за креирање њихових УРЛ образаца. Такође можете прочитати о разлике између пројекта и апликације у Дјангу ако сте збуњени њиховом употребом овде.

Корак 8: Тестирајте крајње тачке АПИ-ја

Из директоријума пројекта покрените следеће:

python manage.py runserver

Ово би требало да покрене ваш сервер, изврши неке провере и одштампа УРЛ преко којег му можете приступити.

Сада можете да тестирате крајње тачке АПИ-ја тако што ћете доћи до одговарајућих УРЛ адреса (нпр. /api/recipes/) и слање Методе ХТТП захтева за ЦРУД операције. Требало би да видите подразумевани интерфејс овако:

Уместо да користите свој претраживач, можете тестирајте свој АПИ помоћу Постмана.

Вежбајте ДРИ док креирате ЦРУД АПИ

ДРИ (Не понављај се) је а принцип програмирања који треба да усвојите да побољшате квалитет вашег кода.

Иако горе написани ставови добро функционишу, можете избећи много понављања коришћењем ЛистЦреатеАПИВиев анд тхе РетриевеУпдатеДестроиАПИВиев генерички погледи.

ЛистЦреатеАПИВиев комбинује ЛистАПИВиев и ЦреатеАПИВиев, док РетриевеУпдатеДестроиАПИВиев комбинује РетриевеАПИВиев, УпдатеАПИВиев, анд тхе ДестроиАПИВиев.

Можете да измените своје претходне приказе да изгледају овако:

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()

Овај приступ смањује укупну количину кода.

Можете креирати УРЛ адресе за нове приказе овако:

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'),
]

Можете тестирати ове крајње тачке са Постман-ом или било којим другим АПИ алатка за тестирање преферирате.

Генерички прикази засновани на класама олакшавају вам рад

Као што је горе наведено, генерички погледи засновани на класама могу убрзати процес креирања погледа. Сада морате само да наследите прави АПИВиев за ваш случај употребе.

Такође би требало да се побринете да усвојите добре праксе програмирања, како не бисте на крају написали лош код.