Einführung in das Django REST Framework: Entwicklung mit Beispielen

Veröffentlicht: 2020-10-05

Das 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'>&times;</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.

Bereiten Sie sich auf eine Karriere der Zukunft vor

UPGRAD UND IIIT-BANGALORES PG-DIPLOM IN FULL-STACK-SOFTWAREENTWICKLUNG
Melden Sie sich noch heute an