Einführung in das Django REST Framework: Entwicklung mit Beispielen
Veröffentlicht: 2020-10-05Das Django-REST-Framework ist als Standard-Python-Paket weit verbreitet, das Benutzer möglicherweise benötigen, um mit der Entwicklung von RESTful-APIs zu beginnen. Es ist ausgeklügelt, leistungsstark, erstaunlich einfach zu bedienen und bietet eine attraktive und durchsuchbare Version für APIs. Das Django REST Framework bietet die Möglichkeit, JSON-Objekte zurückzugeben. Dieses Framework bietet eine leistungsstarke Serialisierung des Modells und zeigt die Daten mithilfe grundlegender funktionsbasierter Ansichten insgesamt in einem vollständig REST-Viewer an. Erfahren Sie unten mehr über das Django-REST-Framework :
Inhaltsverzeichnis
Was ist das Django-REST-Framework?
Das Django REST Framework ist ein flexibles und robustes Toolkit, das es Entwicklern leicht macht, Web-APIs zu erstellen. Es bietet auch klassenbasierte verallgemeinerte Ansichten und Serialisierer für die API. Da es sich um einen Quellcode handelt, wird er als DRF abgekürzt, was eine Python-Bibliothek zur Entwicklung von Programmierschnittstellen für Webanwendungen darstellt. Wie in diesem Artikel sprechen wir über Entwicklungs-APIs mit Schritt-für-Schritt-Anleitungen.
Aber bevor Sie mit dem Leitfaden beginnen, ist es wichtig zu verstehen, warum das Framework überhaupt wichtig ist. Viele verfügbare Frameworks ermöglichen es Entwicklern, APIs für ihre Blockanwendungen einfach zu erstellen, aber das Django-REST-Framework wird bevorzugt. Dieses Framework ist auf verschiedene Weise bequem zu verwenden und bietet die unten genannten Vorteile:
- Es bietet Webbrowsern eine leistungsfähige Anwendungsprogrammierschnittstelle, was ein großer Gewinn für Entwickler ist
- Es verfügt über Authentifizierungsrichtlinien, einschließlich der Pakete für OAuth1, OAuth2 usw
- Der darin enthaltene Serialisierungsprozessor unterstützt die ORM- und Nicht-ORM-Datenquellen
- Dieses Framework verfügt über eine umfangreiche Dokumentation und bietet großartige Community-Unterstützung
- Es wird von großen Plattformen verwendet und vertraut, darunter Mozilla, Heroku, RedHat usw.
Lesen Sie: Django-Anwendungen: Alles, was Sie wissen müssen
Legen Sie die Django REST Framework-Entwicklung fest
Zunächst müssen Sie die Python-Abhängigkeiten für das Betriebssystem installieren. Wenn Sie die Windows-Plattform verwenden, können Sie die Linux-Plattform ganz einfach mit einer virtuellen Box oder einem manuellen Befehl als sekundäres Betriebssystem installieren. Um mit dem Framework fortzufahren, können Sie effektive und praktische Python-Verwaltungstools verwenden.
Die meisten Tools sind praktische Helfer. Sie ermöglichen Entwicklern, Python-Versionen schnell zu ändern, projektspezifische Versionen festzulegen, die virtuelle Umgebung zu verwalten und mehrere Versionen auf dem System zu installieren. Wenn Sie Linux- oder Mac-Betriebssysteme verwenden, ist die Installation einfach.

Mit Hilfe des Django REST-Frameworks können wir eine Nicht-RESTful-Anwendung in eine RESTful-Anwendung umwandeln. Dies beinhaltet die unten genannten Verfahren-
DRF-Setup
Für das DRF-Setup müssen Sie Folgendes installieren:
Hülse
$ pip installiert djangorestframework
$ pip freeze > requirements.txt
Einstellungen aktualisieren :py:
Python
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'sprechen',
'rest_framework'
)
RESTful-Struktur
In einer RESTful-API-Entwicklung repräsentieren die Endpunkte ihre Struktur und den Benutzerzugriff aus der Anwendung mit Hilfe von Methoden wie GET, PUT, POST, DELETE. Diese Endpunkte sind logisch um das Element und die Sammlungen herum organisiert, die beide als Ressourcen gezählt werden. Wenn es eine einzelne Ressource gibt, werden entsprechende Links als URLs für Elemente und Sammlungen verwendet.
BEKOMMEN
POST
SETZEN
LÖSCHEN
/posts/
Alle Beiträge anzeigen
Neuen Beitrag hinzufügen
Aktualisieren Sie alle Beiträge
Alle Beiträge löschen
/posts/<id>
<ID> anzeigen
N / A
Aktualisieren Sie <id>
ID löschen
Serialisierer und Ansichten
Der Hauptbaustein des Django-REST-Frameworks sind Serialisierer, und sie werden verwendet, um die Darstellung verschiedener Datensätze auf der Grundlage der Django-Modelle zu erarbeiten. Serialisierer sind die Standard-Python-Klasse, die das Verhalten des Modells vom Framework erben kann.
Innerhalb der Serializer-Klasse sind separate Feldsätze vorhanden, die Datentypen aus ihrem Paket desselben Frameworks verwenden. Sie bemerkten auch die Ähnlichkeiten zwischen dem Framework und den Klassen. Serializer-Klassen selbst denken nicht, und sie sind in Ansichten integriert, die den Großteil der REST-Dienstlogik verwalten. Darüber hinaus verwendet es die Serializer-Klassen, um die Daten umzuwandeln. Eine normale Django-Ansichtsmethode ist beispielsweise:
von coffeehouse.stores.models Import Store
aus coffeehouse.stores.serializers importieren Sie StoreSerializer
aus rest_framework.decorators import api_view
aus rest_framework.response Antwort importieren
@api_view(['GET','POST','DELETE'])
def rest_store(Anfrage):
if request.method == 'GET':
speichert = Store.objects.all()
serializer = StoreSerializer(stores, many=True)
Antwort zurückgeben (serializer.data)
elif request.method == 'POST':
… #logic für den HTTP-POST-Vorgang
elif request.method == 'LÖSCHEN':
… #logic für den HTTP-DELETE-Vorgang
Klassenbasierte Ansichten
Mit Hilfe von klassenbasierten Ansichten bietet das Django-REST-Framework Zugriff auf die höchsten und komplexesten Funktionen der Benutzer. Klassenbasierte Views bieten die Funktionen echter vollwertiger Python-Klassen und ermöglichen es, Django-Views mit Hilfe objektorientierter Programmierprinzipien einfach zu bedienen, was zu einer größeren Wiederverwendbarkeit und kurzen Implementierungszeiten führt.

Die auf Django-Klassen basierenden Ansichten heben einen leistungsstarken Ansatz zum Erstellen von Django-Ansichten hervor und sind auch eine Alternative zu den Methoden, die zum Erstellen von APIs verwendet werden. Um eine klassenbasierte Ansicht zu entwickeln, ist es wichtig, eine Klasse zu erstellen, die von einer der anderen Klassen erben kann. Zum Beispiel:
# Ansichten.py
aus Django.views.generic import TemplateView
Klasse AboutIndex(TemplateView):
template_name = 'index.html'
def get_context_data(self, **kwargs):
# **kwargs enthält Schlüsselwortkontext-Initialisierungswerte (falls vorhanden)
# Rufen Sie die Basisimplementierung auf, um einen Kontext zu erhalten
context = super(AboutIndex, self).get_context_data(**kwargs)
# Fügen Sie Kontextdaten hinzu, die an die Vorlage übergeben werden sollen
context['aboutdata'] = 'Benutzerdefinierte Daten'
Kontext zurückgeben
# urls.py
aus coffeehouse.about.views import AboutIndex
aus dem Importpfad von django.urls
URL-Muster = [
path('about/index/',AboutIndex.as_view(),{'onsale':True}),
Checkout: Die 12 besten Fragen und Antworten zu Django-Interviews für Anfänger
Ansichten aktualisieren
Um der RESTful-Anwendungsstruktur zu entsprechen, ist es wichtig, die aktuellen Ansichten umzugestalten. Sie können diese Ansichten auskommentieren und sie als
Python
aus django.shortcuts import render
von django.http import HttpResponse
aus rest_framework.decorators import api_view
aus rest_framework.response Antwort importieren
von talk.models import Post
aus talk.serializers import PostSerializer
aus talk.forms PostForm importieren
def home (Anfrage):
tmpl_vars = {'Formular': PostForm()}
return render(request, 'talk/index.html', tmpl_vars)
@api_view(['GET'])
def post_collection (Anfrage):
if request.method == 'GET':
posts = Post.objects.all()
serializer = PostSerializer(posts, many=True)
Antwort zurückgeben (serializer.data)
@api_view(['GET'])
def post_element(Anfrage, pk):
Versuchen:
post = Post.objects.get(pk=pk)
außer Post.DoesNotExist:
HTTP-Antwort zurückgeben (Status = 404)
if request.method == 'GET':
serializer = PostSerializer(post)
Antwort zurückgeben (serializer.data)
Erläuterung
- In den obigen Anweisungen analysiert der Decorator @api_view den entsprechenden HTTP-Request, der an die View-Funktion übergeben wird.
- Jetzt verwendet die Ansicht entweder einen einzelnen Beitrag, wenn es sich um ein Element handelt, oder erfasst die gesamten Daten, wenn es sich um die Sammlung handelt
- Abschließend werden die Daten nun in den JSON serialisiert und entsprechend zurückgegeben
Webbrowsbare API oder aktualisierte URL
Einige aktualisierte URLs für Python sind:
# Diskussions-URLs
aus django.conf.urls Importmuster, URL
URL-Muster = Muster (
'talk.views',
url(r'^$', 'home'),
#API
url(r'^api/v1/posts/$', 'post_collection'),
url(r'^api/v1/posts/(?P<pk>[0-9]+)$', 'post_element')
)
Umgestaltung für die RESTful-API-Integration
Es enthält die wichtigsten HTTP-Methoden wie
BEKOMMEN
Beim ersten Laden der Seite ist es wichtig, die Beiträge anzuzeigen, und dazu können Sie diese Anfrage hinzufügen:
load_posts()
// Alle Beiträge beim Laden der Seite laden
Funktion load_posts() {
$.ajax({
url : „api/v1/posts/“, // der Endpunkt
Typ: „GET“, // http-Methode
// eine erfolgreiche Antwort verarbeiten
Erfolg: Funktion (json) {
for (var i = 0; i < json.length; i++) {
console.log(json[i])
$(“#talk”).prepend(“<li id='post-“+json[i].id+”'><strong>”+json[i].text+”</strong> – <em> “ +json[i].author+”</em> – <span> “+json[i].created+
„</span> – <a id='delete-post-“+json[i].id+“'>lösche mich</a></li>“);
}
},
// eine nicht erfolgreiche Antwort verarbeiten
error : function(xhr,errmsg,err) {
$('#results').html(“<div class='alert-box alert radius' data-alert>Hoppla! Wir haben einen Fehler festgestellt: „+errmsg+
” <a href='#' class='close'>×</a></div>”); // füge den Fehler zum Dom hinzu
console.log(xhr.status + „: “ + xhr.responseText); // Geben Sie der Konsole etwas mehr Informationen über den Fehler
}
});
};
POST
POST-Anforderungen werden auf ähnliche Weise verwaltet, und Sie können dies testen, indem Sie die Ansichten aktualisieren. Sie können die Funktion post_collection () in views.py aktualisieren:
@api_view(['GET', 'POST'])
def post_collection (Anfrage):
if request.method == 'GET':
posts = Post.objects.all()
serializer = PostSerializer(posts, many=True)
Antwort zurückgeben (serializer.data)
elif request.method == 'POST':
data = {'text': request.DATA.get('the_post'), 'author': request.user.pk}
Serialisierer = PostSerializer(Daten=Daten)
if serializer.is_valid():
serializer.save()

Antwort zurückgeben (serializer.data, status=status.HTTP_201_CREATED)
Antwort zurückgeben (serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Lesen Sie auch: Django-Entwicklergehalt in Indien
Das Endergebnis
Der eigentliche REST-Teil des Django REST -Frameworks ist ziemlich einfach und Sie müssen lediglich die Post-Element-Funktion aktualisieren, um die Anfrage zu bearbeiten. Wenn Sie noch Fragen haben, gibt es eine Reihe von Django-REST-Frameworks und Ressourcen für die Improvisation.
Wenn Sie mehr über Django und andere Full-Stack-Entwicklersprachen und -Tools erfahren möchten, sehen Sie sich das PG-Diplom in Full-Stack-Softwareentwicklung von upGrad & IIIT-B an, das für Berufstätige konzipiert ist und mehr als 500 Stunden strenge Schulungen bietet. Über 9 Projekte und Aufgaben, IIIT-B-Alumni-Status, praktische praktische Abschlussprojekte und Arbeitsunterstützung bei Top-Unternehmen.