Erstellen von RESTful-APIs in Django mit dem Django REST Framework
Django REST Framework (DRF) ist ein leistungsstarkes und flexibles Toolkit zum Erstellen von Web-APIs. Es vereinfacht den Prozess der Erstellung von RESTful-APIs und bietet sofort einsatzbereite Funktionen wie Serialisierer, Viewsets und Authentifizierungsmechanismen.
Einrichten des Django REST Frameworks
Bevor Sie eine RESTful-API erstellen können, müssen Sie das Django REST Framework installieren und es Ihrem Projekt hinzufügen. Führen Sie den folgenden Befehl aus, um DRF zu installieren:
pip install djangorestframework
Fügen Sie dann 'rest_framework' zu INSTALLED_APPS
in Ihrer Datei settings.py
hinzu:
INSTALLED_APPS = [
...,
'rest_framework',
]
Erstellen einer einfachen API
Erstellen wir eine API für ein einfaches Modell namens Book
. Der erste Schritt besteht darin, das Modell in models.py
zu definieren:
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=255)
author = models.CharField(max_length=255)
published_date = models.DateField()
isbn = models.CharField(max_length=13)
def __str__(self):
return self.title
Führen Sie nach der Definition des Modells Migrationen aus, um die Datenbanktabelle zu erstellen:
python manage.py makemigrations
python manage.py migrate
Erstellen eines Serialisierers
Serialisierer in DRF konvertieren komplexe Datentypen wie Django-Modelle in JSON. Erstellen Sie einen Serialisierer für das Modell Book
:
from rest_framework import serializers
from .models import Book
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = '__all__'
Erstellen von Ansichten und URLs
DRF bietet zwei Hauptmethoden zum Erstellen von API-Ansichten: funktionsbasierte Ansichten und klassenbasierte Ansichten. Hier verwenden wir klassenbasierte Ansichten mit APIView
:
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from .models import Book
from .serializers import BookSerializer
class BookListCreateAPIView(APIView):
def get(self, request):
books = Book.objects.all()
serializer = BookSerializer(books, many=True)
return Response(serializer.data)
def post(self, request):
serializer = BookSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Konfigurieren Sie als Nächstes URLs für diese Ansicht in urls.py
:
from django.urls import path
from .views import BookListCreateAPIView
urlpatterns = [
path('books/', BookListCreateAPIView.as_view(), name='book-list-create'),
]
Testen der API
Wenn der Server läuft, können Sie die API unter http://127.0.0.1:8000/books/
mit Tools wie Postman oder curl testen. Eine GET-Anfrage ruft alle Bücher ab, und eine POST-Anfrage ermöglicht Ihnen, ein neues Buch zu erstellen.
Erweitern der API mit ViewSets
Für prägnanteren und wiederverwendbaren Code können Sie DRFs ViewSet
und Router
verwenden. So aktualisieren Sie die API, um ein ModelViewSet
zu verwenden:
from rest_framework.viewsets import ModelViewSet
from .models import Book
from .serializers import BookSerializer
class BookViewSet(ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer
Konfigurieren Sie dann den Router in urls.py
:
from rest_framework.routers import DefaultRouter
from .views import BookViewSet
router = DefaultRouter()
router.register(r'books', BookViewSet, basename='book')
urlpatterns = router.urls
Abschluss
Mit dem Django REST Framework können Sie ganz einfach robuste und flexible RESTful-APIs erstellen. Mithilfe von Serialisierern, Ansichten und Routern können Sie APIs erstellen, die problemlos mit komplexen Datenmodellen umgehen. Auf dieser Grundlage können Sie nun erweiterte Funktionen wie benutzerdefinierte Berechtigungen, Paginierung und Authentifizierung in DRF erkunden.