इस चरण-दर-चरण मार्गदर्शिका का पालन करें और आपके पास सीआरयूडी एपीआई का मूल होगा जिस पर आगे निर्माण करना है।

Django रेस्ट फ्रेमवर्क (DRF) एक Django फ्रेमवर्क है जो REST API के निर्माण के लिए समर्थन प्रदान करता है। Django की तरह, DRF आपको फ़ंक्शन-आधारित या क्लास-आधारित दृश्यों के साथ अपने एपीआई दृश्य बनाने की अनुमति देता है।

हालाँकि पहली बार में वर्ग-आधारित विचारों के साथ काम करना मुश्किल हो सकता है, वे बेहतर कोड संरचना, पुन: प्रयोज्यता, विरासत और संक्षिप्तता जैसे लाभ प्रदान करते हैं।

Django REST फ्रेमवर्क के साथ एक रेसिपी मैनेजर एपीआई बनाएं

रेसिपी मैनेजर ऐप डीआरएफ में कक्षा-आधारित विचारों के बारे में जानने का एक शानदार तरीका है। व्यंजनों को जोड़ने, हटाने और संपादित करने जैसी सुविधाएं आपको यह समझने में मदद करेंगी कि सीआरयूडी (बनाएं, पढ़ें, अपडेट करें, हटाएं) संचालन कैसे लागू करें। निम्नलिखित चरण आपको सिखाएंगे कि सीआरयूडी एपीआई कैसे बनाएं।

आप इस गाइड के लिए कोड यहां पा सकते हैं GitHub.

चरण 1: Django REST फ्रेमवर्क स्थापित करें और अपना प्रोजेक्ट कॉन्फ़िगर करें

  1. अपने प्रोजेक्ट के लिए एक वर्चुअल वातावरण बनाएं और निम्नलिखित निर्भरताएँ स्थापित करें:
    pip install django djangorestframework
  2. instagram viewer
  3. नामक एक Django प्रोजेक्ट बनाएं मुख्य निम्नलिखित आदेश के साथ:
    django-admin startproject core .
  4. नामक एक ऐप बनाएं रेसिपी_मैनेजर:
    python manage.py startapp recipe_manager
  5. अपनी खोलो core/settings.py फ़ाइल करें और नेविगेट करें इंस्टॉल_ऐप्स अपने ऐप्स पंजीकृत करने के लिए सूची:
    INSTALLED_APPS = [
    # custom apps
    'rest_framework',
    'recipe_manager',
    ]

चरण 2: अपने रेसिपी ऐप के लिए एक मॉडल बनाएं

  1. अपनी खोलो रेसिपी_मैनेजर/मॉडल.py फ़ाइल करें और अपने ऐप के लिए एक मॉडल बनाएं। यहां रेसिपी मॉडल का एक बुनियादी उदाहरण दिया गया है:
    # 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: अपने ऐप के लिए एक सीरियलाइज़र बनाएं

सीरिएलाइज़र एक Django घटक है जो आपको जटिल डेटा प्रकारों, जैसे कि आपके क्वेरी सेट, को एक ऐसे प्रारूप में परिवर्तित करने में मदद करता है जिसे आप प्रस्तुत कर सकते हैं, जैसे JSON या XML, और इसके विपरीत।

सीरिएलाइज़र बनाने के लिए, इन चरणों का पालन करें:

  1. नामक फ़ाइल बनाएँ रेसिपी_मैनेजर/serializers.py.
  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: क्रिएट ऑपरेशन के लिए एक दृश्य लिखें

आप Django में उपलब्ध सामान्य दृश्य को आयात करके अपने ऐप के लिए क्लास-आधारित दृश्य बना सकते हैं। आप इन नजारों के बारे में यहां पढ़ सकते हैं Django का आधिकारिक दस्तावेज़. सीआरयूडी के क्रिएट ऑपरेशन को लागू करने के लिए, आपको आयात करना चाहिए एपीआईव्यू बनाएं. आपको अपना सीरिएलाइज़र और मॉडल भी आयात करना चाहिए:

# views.py
from rest_framework.generics import CreateAPIView

from .models import Recipe
from .serializers import RecipeSerializer

क्रिएट ऑपरेशन को लागू करने के लिए, आपको केवल उस सीरिएलाइज़र को निर्दिष्ट करना होगा जिसका उपयोग आपके दृश्य को करना चाहिए। यहाँ एक उदाहरण है:

# Create view
classRecipeCreateView(CreateAPIView):
serializer_class = RecipeSerializer

इस सेटअप के साथ, आप अपने ऐप पर POST अनुरोध कर सकते हैं।

चरण 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. इस कोड को इसमें जोड़ें core/urls.py अपने यूआरएल को कॉन्फ़िगर करने के लिए:
    from django.urls import path, include

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

  2. निम्नलिखित कोड को अपने में जोड़ें रेसिपी_मैनेजर/urls.py फ़ाइल:
    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'),
    ]

    उपरोक्त कोड से, आप देखेंगे कि वर्ग-आधारित दृश्य इसका उपयोग करते हैं as_view() उनके यूआरएल पैटर्न बनाने के लिए कार्य करें। के बारे में भी पढ़ सकते हैं Django में एक प्रोजेक्ट और एक ऐप के बीच अंतर यदि आप यहां उनके उपयोग से भ्रमित हैं।

चरण 8: अपने एपीआई एंडपॉइंट का परीक्षण करें

अपनी प्रोजेक्ट निर्देशिका से, निम्नलिखित चलाएँ:

python manage.py runserver

इससे आपका सर्वर शुरू हो जाएगा, कुछ जांच हो जाएगी और एक यूआरएल प्रिंट हो जाएगा जिसके जरिए आप उस तक पहुंच सकते हैं।

अब आप संबंधित यूआरएल पर नेविगेट करके अपने एपीआई एंडपॉइंट का परीक्षण कर सकते हैं (उदाहरण के लिए, /api/recipes/) और भेज रहा हूँ HTTP अनुरोध विधियाँ सीआरयूडी संचालन के लिए। आपको इस तरह एक डिफ़ॉल्ट इंटरफ़ेस देखना चाहिए:

इसके बजाय आप अपने ब्राउज़र का उपयोग कर सकते हैं पोस्टमैन के साथ अपने एपीआई का परीक्षण करें.

CRUD API बनाते समय DRY का अभ्यास करना

DRY (डोंट रिपीट योरसेल्फ) एक है प्रोग्रामिंग सिद्धांत आपको अपनाना चाहिए अपने कोड की गुणवत्ता में सुधार करने के लिए.

हालाँकि ऊपर लिखे गए विचार अच्छी तरह से काम करते हैं, आप इसका उपयोग करके बहुत अधिक पुनरावृत्ति से बच सकते हैं ListCreateAPIView और यह पुनर्प्राप्तअपडेटडेस्ट्रॉयएपीआईव्यू पुनः प्राप्त करें सामान्य विचार.

ListCreateAPIView संयोजित होता है सूचीएपीआई दृश्य और एपीआईव्यू बनाएं, जबकि RetrieveUpdateDestroyAPIView संयोजित होता है एपीआईव्यू पुनः प्राप्त करें, अपडेटएपीआईव्यू, और यह एपीआईव्यू को नष्ट करें.

आप इस तरह दिखने के लिए अपने पिछले दृश्यों को संशोधित कर सकते हैं:

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

यह दृष्टिकोण कोड की कुल मात्रा को कम कर देता है।

आप नए दृश्यों के लिए इस प्रकार URL बना सकते हैं:

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

आप पोस्टमैन या किसी के साथ इन समापन बिंदुओं का परीक्षण कर सकते हैं एपीआई परीक्षण उपकरण आप पसंद करेंगे।

सामान्य वर्ग-आधारित दृश्य आपके काम को आसान बनाते हैं

जैसा कि ऊपर देखा गया है, सामान्य वर्ग-आधारित विचार, दृश्य बनाने की प्रक्रिया को तेज़ कर सकते हैं। अब आपको केवल अपने उपयोग के मामले के लिए सही APIView प्राप्त करने की आवश्यकता है।

आपको यह भी सुनिश्चित करना चाहिए कि आप अच्छी प्रोग्रामिंग प्रथाएँ अपनाएँ, ताकि आपको ख़राब कोड न लिखना पड़े।