Bu adım adım kılavuzu takip ettiğinizde, üzerine daha fazla geliştirme yapabileceğiniz bir CRUD API'sinin çekirdeğine sahip olacaksınız.

Django Rest Framework (DRF), REST API'leri oluşturmak için destek sunan bir Django çerçevesidir. Django gibi DRF de API görünümlerinizi işlev tabanlı veya sınıf tabanlı görünümlerle oluşturmanıza olanak tanır.

Sınıf tabanlı görünümlerle çalışmak ilk başta zor olsa da daha iyi kod yapısı, yeniden kullanılabilirlik, kalıtım ve kısalık gibi avantajlar sunarlar.

Django REST Framework ile Tarif Yöneticisi API'si Oluşturun

Tarif yöneticisi uygulaması, DRF'deki sınıf tabanlı görünümler hakkında bilgi edinmenin harika bir yoludur. Tarif ekleme, silme ve düzenleme gibi özellikler, CRUD (Oluşturma, Okuma, Güncelleme, Silme) işlemlerini nasıl uygulayacağınızı anlamanıza yardımcı olacaktır. Aşağıdaki adımlar size CRUD API'sinin nasıl oluşturulacağını öğretecektir.

Bu kılavuzun kodunu şu adreste bulabilirsiniz: GitHub.

Adım 1: Django REST Çerçevesini Kurun ve Projenizi Yapılandırın

instagram viewer
  1. Projeniz için sanal bir ortam oluşturun ve aşağıdaki bağımlılıkları yükleyin:
    pip install django djangorestframework
  2. Adlı bir Django projesi oluşturun çekirdek aşağıdaki komutla:
    django-admin startproject core .
  3. adlı bir uygulama oluşturun tarif_yöneticisi:
    python manage.py startapp recipe_manager
  4. çekirdek/ayarlar.py dosyaya gidin ve INSTALLED_APPS uygulamalarınızı kaydetmek için liste:
    INSTALLED_APPS = [
    # custom apps
    'rest_framework',
    'recipe_manager',
    ]

Adım 2: Tarif Uygulamanız için Bir Model Oluşturun

  1. tarif_yöneticisi/models.py dosyalayın ve uygulamanız için bir model oluşturun. İşte bir tarif modelinin temel bir örneği:
    # models.py
    from django.db import models

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

  2. Bu komutla geçişler oluşturun ve modelinizi veritabanına taşıyın:
    python manage.py makemigrations && python manage.py migrate

3. Adım: Uygulamanız için Serileştirici Oluşturun

Seri hale getirici, sorgu kümeniz gibi karmaşık veri türlerini JSON veya XML gibi oluşturabileceğiniz bir biçime (veya tam tersi) dönüştürmenize yardımcı olan bir Django bileşenidir.

Seri hale getirici oluşturmak için şu adımları izleyin:

  1. adlı bir dosya oluşturun tarif_yöneticisi/serializers.py.
  2. İçe aktar serileştiriciler modülün yanı sıra serileştirmek istediğiniz model:
    # serializers.py
    from rest_framework import serializers

    from .models import Recipe # the model to serialize

  3. Aynı dosyada modeliniz için bir serileştirici sınıfı oluşturun ve Meta içindeki sınıf:
    # serializers.py
    classRecipeSerializer(serializers.ModelSerializer):
    classMeta:
    model = Recipe
    fields = ('recipe_name', 'ingredients', 'instructions')
    Bu kodda, Meta sınıf, serileştirilecek modeli ve seri hale getiricinin işlemesi gereken belirli alanları tanımlar. alanlar nitelik bir liste veya bir tuple olabilir. Modelinizdeki tüm alanları serileştirmek istiyorsanız bunu şu şekilde yapabilirsiniz:
    classMeta:
    fields = "__all__"

Adım 4: CREATE İşlemi için bir Görünüm Yazın

Django'da bulunan genel görünümü içe aktararak uygulamanız için sınıf tabanlı görünümler oluşturabilirsiniz. Bu görüşler hakkında şu adresten okuyabilirsiniz: Django'nun resmi belgeleri. CRUD'un CREATE işlemini uygulamak için, içe aktarmanız gerekir. API Görünümü Oluştur. Ayrıca seri hale getiricinizi ve modelinizi de içe aktarmalısınız:

# views.py
from rest_framework.generics import CreateAPIView

from .models import Recipe
from .serializers import RecipeSerializer

CREATE işlemini uygulamak için yalnızca görünümünüzün kullanması gereken seri hale getiriciyi belirtmeniz gerekir. İşte bir örnek:

# Create view
classRecipeCreateView(CreateAPIView):
serializer_class = RecipeSerializer

Bu kurulumla uygulamanıza POST istekleri yapabilirsiniz.

Adım 5: READ İşlemi için Bir Görünüm Yazın

  1. READ işlemini uygulamak için içe aktarın ListAPIView görüşlerinize. Bu görünüm model nesnelerini listelemenize yardımcı olur:
    # views.py
    from rest_framework.generics import CreateAPIView, ListAPIView
  2. Görünümleriniz için bir sınıf oluşturun ve kullanılacak serileştiriciyi ve sorgu kümesini belirtin:
    # List view
    classRecipeListView(ListAPIView):
    serializer_class = RecipeSerializer
    queryset = Recipe.objects.all()
  3. Belirli bir tarifi okumak için bir görünüm oluşturun. Bunu yapmak için ihtiyacınız olan APIView'ı Al bu yüzden onu ithalat listenize ekleyin:
    # views.py
    from rest_framework.generics import CreateAPIView, ListAPIView, RetrieveAPIView
    Ardından ihtiyacınız olan görünümü oluşturun:
    # Retrieve view
    classRecipeRetrieveView(RetrieveAPIView):
    serializer_class = RecipeSerializer
    queryset = Recipe.objects.all()

Adım 6: GÜNCELLEME ve SİLME İşlemleri için Görünümler Yazma

GÜNCELLEME ve DELETE işlemlerini uygulamak için aşağıdakilere ihtiyacınız vardır: Güncelleme API Görünümü Ve API Görünümünü Yok Et sırasıyla, bunları içe aktarın:

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

Daha sonra, daha önce yaptığınız gibi görünümleri oluşturun. Bu sefer görüşleriniz Güncelleme API Görünümü Ve API Görünümünü Yok Et, sırasıyla:

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

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

7. Adım: Uygulamanız için URL'ler oluşturun

  1. Bu kodu şuraya ekle: çekirdek/urls.py URL'lerinizi yapılandırmak için:
    from django.urls import path, include

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

  2. Aşağıdaki kodu dosyanıza ekleyin tarif_yöneticisi/urls.py dosya:
    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'),
    ]

    Yukarıdaki koddan, sınıf tabanlı görünümlerin aşağıdakileri kullandığını gözlemleyeceksiniz: as_view() URL kalıplarını oluşturma işlevini kullanın. Ayrıca şunları da okuyabilirsiniz: Django'da bir proje ile uygulama arasındaki farklar Buradaki kullanımları konusunda kafanız karıştıysa.

8. Adım: API Uç Noktalarınızı Test Edin

Proje dizininizden aşağıdakileri çalıştırın:

python manage.py runserver

Bu, sunucunuzu başlatmalı, bazı kontroller gerçekleştirmeli ve sunucuya erişebileceğiniz bir URL yazdırmalıdır.

Artık ilgili URL'lere giderek API uç noktalarınızı test edebilirsiniz (ör. /api/recipes/) ve gönderiyorum HTTP istek yöntemleri CRUD işlemleri için. Bunun gibi bir varsayılan arayüz görmelisiniz:

Tarayıcınızı kullanmak yerine şunları yapabilirsiniz: API'nizi Postman ile test edin.

CRUD API Oluştururken DRY Uygulaması Yapmak

KURU (Kendinizi Tekrar Etmeyin) bir benimsemeniz gereken programlama ilkesi kodunuzun kalitesini artırmak için.

Yukarıda yazılan görüşler işe yarasa da, aşağıdakileri kullanarak birçok tekrarın önüne geçebilirsiniz: ListCreateAPIView ve Güncellemeyi AlDestroyAPIView genel görünümler

ListCreateAPIView şunları birleştirir: ListAPIView Ve API Görünümü OluşturRetrieveUpdateDestroyAPIView ise şunları birleştirir: APIView'ı Al, Güncelleme API Görünümü, ve API Görünümünü Yok Et.

Önceki görünümlerinizi şu şekilde görünecek şekilde değiştirebilirsiniz:

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

Bu yaklaşım toplam kod miktarını azaltır.

Yeni görünümler için şu şekilde URL'ler oluşturabilirsiniz:

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

Bu uç noktaları Postman veya herhangi bir programla test edebilirsiniz. API test aracı tercih ediyorsun.

Genel Sınıf Tabanlı Görünümler İşinizi Kolaylaştırır

Yukarıda görüldüğü gibi genel sınıf tabanlı görünümler, görünüm oluşturma sürecini hızlandırabilir. Artık yalnızca kullanım durumunuz için doğru APIView'ı devralmanız gerekiyor.

Ayrıca iyi programlama uygulamalarını benimsediğinizden emin olmalısınız, böylece kötü kod yazmazsınız.