Introduzione a Django REST Framework: sviluppo con esempi

Pubblicato: 2020-10-05

Il Django REST Framework è ampiamente distribuito come pacchetto Python standard che gli utenti potrebbero richiedere per iniziare a sviluppare API RESTful. È sofisticato, potente, incredibilmente facile da usare e offre una versione attraente e sfogliabile per le API. Il Django REST Framework offre la possibilità di restituire oggetti JSON. Questo framework offre una potente serializzazione del modello e visualizza i dati utilizzando viste basate su funzioni di base del tutto in un visualizzatore REST completamente. Scopri di più sul framework Django REST di seguito:

Sommario

Che cos'è il Django REST Framework?

Il Django REST Framework è un kit di strumenti flessibile e robusto che semplifica la creazione di API Web da parte degli sviluppatori. Offre inoltre visualizzazioni generalizzate basate su classi e serializzatori per l'API. Essendo un codice sorgente, è abbreviato in DRF, che rappresenta una libreria Python per lo sviluppo di interfacce di programmazione di applicazioni web. Come in questo articolo, stiamo parlando di API di sviluppo con istruzioni dettagliate.

Ma prima di iniziare con la guida, è importante capire perché il framework è ancora importante. Molti framework disponibili consentono agli sviluppatori di creare facilmente API per le loro applicazioni a blocchi, ma è preferibile il framework Django REST. Questo framework è comodo da usare in diversi modi e offre i vantaggi sotto menzionati:

  • Offre ai browser Web un'interfaccia di programmazione delle applicazioni capace, che è una grande vittoria per gli sviluppatori
  • Ha criteri di autenticazione inclusi i pacchetti per OAuth1, OAuth2, ecc
  • il processore di serializzazione in esso contenuto supporta le origini dati ORM e non ORM
  • questo framework ha un'ampia documentazione e offre un ottimo supporto della comunità
  • È utilizzato e considerato affidabile da grandi piattaforme, tra cui Mozilla, Heroku, RedHat, ecc.

Leggi: Applicazioni Django: tutto ciò che devi sapere

Imposta lo sviluppo del framework REST di Django

Per cominciare, devi installare le dipendenze Python per il sistema operativo. Se stai utilizzando la piattaforma Windows, puoi facilmente installare la piattaforma Linux come sistema operativo secondario con una scatola virtuale o un comando manuale. Per procedere con il framework, puoi utilizzare strumenti di gestione Python efficaci e convenienti.

La maggior parte degli strumenti sono un aiuto di riferimento. Consentono agli sviluppatori di modificare rapidamente le versioni di Python, impostare versioni specifiche del progetto, gestire l'ambiente virtuale e installare più versioni sul sistema. Se stai utilizzando sistemi operativi Linux o Mac, sarebbe facile installarlo.

Con l' aiuto del framework Django REST , possiamo convertire un'applicazione non RESTful in una RESTful. Questo è comprensivo delle procedure di seguito menzionate-

Configurazione DRF

Per l'installazione DRF, è necessario installare-

Guscio

$ pip installa djangorestframework

$ blocco pip > requisiti.txt

Impostazioni di aggiornamento:py:

Pitone

APP_INSTALLATE = (

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'parlare',

'rest_framework'

)

Struttura riposante

In uno sviluppo di API RESTful, gli endpoint rappresentano la sua struttura e l'accesso utente dall'applicazione con l'aiuto di metodi come GET, PUT, POST, DELETE. Questi endpoint sono organizzati logicamente attorno all'elemento e alle raccolte, entrambi conteggiati come risorse. Se esiste una singola risorsa, i collegamenti corrispondenti verranno utilizzati come URL per elementi e raccolte.

OTTENERE

INVIARE

METTERE

ELIMINARE

/post/

Mostra tutti i post

Aggiungi nuovo post

Aggiorna tutti i post

Elimina tutti i post

/post/<id>

Mostra <id>

N / A

Aggiorna <id>

Elimina ID

Serializzatori e viste

Il principale elemento costitutivo del framework Django REST sono i serializzatori e vengono utilizzati per elaborare la rappresentazione di vari record di dati basati sui modelli Django. I serializzatori sono la classe Python standard che può ereditare il comportamento del modello dal framework.

All'interno della classe serializers sono presenti fieldset separati che utilizzano tipi di dati dal loro pacchetto dello stesso framework. Hanno anche notato le somiglianze tra il framework e le classi. Le classi del serializzatore da sole non pensano e sono integrate con viste che gestiscono la maggior parte della logica del servizio REST. Inoltre, utilizza le classi serializer per trasformare i dati. Ad esempio, un normale metodo di visualizzazione Django è-

dal negozio di importazione coffeehouse.stores.models

da coffeehouse.stores.serializers importa StoreSerializer

da rest_framework.decorators importa api_view

da rest_framework.response import Risposta

@api_view(['OTTIENI','POST','ELIMINA'])

def rest_store(richiesta):

se request.method == 'OTTIENI':

negozi = Store.objects.all()

serializer = StoreSerializer(negozi, molti=True)

restituisce risposta(serializer.data)

elif request.method == 'POST':

… #logica per l'operazione HTTP POST

elif request.method == 'CANCELLA':

… #logica per l'operazione HTTP DELETE

Viste basate sulla classe

Con l'aiuto di viste basate su classi, il framework Django REST fornisce l'accesso alle funzioni supreme e complesse degli utenti. Le viste basate su classi offrono le funzioni delle vere classi Python a tutti gli effetti e consentono alle viste Django di operare facilmente con l'aiuto di principi di programmazione orientati agli oggetti che portano a una maggiore riutilizzabilità insieme a brevi tempi di implementazione.

Le viste basate sulla classe Django evidenziano un approccio potente per creare viste Django e sono anche un'alternativa ai metodi utilizzati per creare API. Per sviluppare una vista basata su classi, è importante creare una classe che possa ereditare da una delle altre classi. Per esempio:

# visualizzazioni.py

da Django.views.generic importa TemplateView

classe AboutIndex(TemplateView):

nome_modello = 'indice.html'

def get_context_data(self, **kwargs):

# **kwargs contiene valori di inizializzazione del contesto delle parole chiave (se presenti)

# Implementazione della base di chiamate per ottenere un contesto

contesto = super(AboutIndex, self).get_context_data(**kwargs)

# Aggiungi dati di contesto da passare al modello

context['aboutdata'] = 'Dati personalizzati'

contesto di ritorno

# urls.py

da coffeehouse.about.views importa AboutIndex

dal percorso di importazione django.urls

urlpattern = [

path('about/index/',AboutIndex.as_view(),{'onsale':True}),

Checkout: le 12 migliori domande e risposte per l'intervista a Django per principianti

Aggiorna visualizzazioni

Per adattarsi alla struttura dell'applicazione RESTful è importante rifattorizzare le viste correnti. Puoi commentare queste visualizzazioni e aggiungerle come-

Pitone

da django.shortcuts import render

da django.http import HttpResponse

da rest_framework.decorators importa api_view

da rest_framework.response import Risposta

da talk.models import Post

da talk.serializers importa PostSerializer

da talk.forms importa PostForm

def casa(richiesta):

tmpl_vars = {'modulo': PostForm()}

return render(richiesta, 'talk/index.html', tmpl_vars)

@api_view(['OTTIENI'])

def post_raccolta(richiesta):

se request.method == 'OTTIENI':

post = Post.objects.all()

serializer = PostSerializer(posts, many=True)

restituisce risposta(serializer.data)

@api_view(['OTTIENI'])

def post_element(richiesta, pk):

Tentativo:

post = Post.objects.get(pk=pk)

tranne Post.DoesNotExist:

return HttpResponse(status=404)

se request.method == 'OTTIENI':

serializzatore = PostSerializer(post)

restituisce risposta(serializer.data)

Spiegazione

  • Nelle istruzioni fornite sopra, il decoratore @api_view analizza la richiesta HTTP corrispondente, che viene passata alla funzione di visualizzazione.
  • Ora la vista utilizza un singolo post se è per un elemento o acquisisce tutti i dati se è per la raccolta
  • Infine, i dati vengono ora serializzati su JSON e restituiti di conseguenza

API navigabile sul Web o URL aggiornato

Alcuni URL aggiornati per Python sono:

# URL di discussione

da django.conf.urls modelli di importazione, URL

urlpattern = patterns(

'talk.views',

url(r'^$', 'casa'),

# api

url(r'^api/v1/posts/$', 'post_raccolta'),

url(r'^api/v1/posts/(?P<pk>[0-9]+)$', 'post_element')

)

Refactor per l'integrazione dell'API RESTful

È comprensivo dei principali metodi HTTP come-

OTTENERE

Caricamento iniziale della pagina, è importante visualizzare i post e, per farlo, puoi aggiungere questa richiesta:

carica_post()

// Carica tutti i post al caricamento della pagina

funzione carica_post() {

$.ajax({

url : "api/v1/posts/", // l'endpoint

digitare: "GET", // metodo http

// gestisce una risposta positiva

successo: funzione(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+”'>eliminami</a></li>”);

}

},

// gestisce una risposta non riuscita

errore: funzione(xhr,errmsg,err) {

$('#results').html(“<div class='alert-box alert radius' data-alert>Oops! Si è verificato un errore: “+errmsg+

” <a href='#' class='close'>&times;</a></div>”); // aggiunge l'errore al dom

console.log(xhr.status + “: ” + xhr.responseText); // fornisce un po' più di informazioni sull'errore alla console

}

});

};

INVIARE

Le richieste POST vengono gestite in modo simile e puoi verificarlo aggiornando le viste. Puoi aggiornare la funzione post_collection() in views.py:

@api_view(['GET', 'POST'])

def post_raccolta(richiesta):

se request.method == 'OTTIENI':

post = Post.objects.all()

serializer = PostSerializer(posts, many=True)

restituisce risposta(serializer.data)

elif request.method == 'POST':

data = {'testo': request.DATA.get('the_post'), 'author': request.user.pk}

serializzatore = PostSerializer(dati=dati)

se serializer.is_valid():

serializer.save()

return Response(serializer.data, status=status.HTTP_201_CREATED)

return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Leggi anche: Stipendio per sviluppatori Django in India

La linea di fondo

L'attuale parte REST del framework Django REST è piuttosto semplice e tutto ciò che devi fare è aggiornare la funzione dell'elemento post per gestire la richiesta. Se hai ancora domande, ci sono una serie di framework REST di Django e risorse per l'improvvisazione.

Se sei interessato a saperne di più su Django e altri linguaggi e strumenti per sviluppatori full-stack, dai un'occhiata al Diploma PG di upGrad e IIIT-B in Sviluppo software full-stack, progettato per i professionisti che lavorano e offre oltre 500 ore di formazione rigorosa, Oltre 9 progetti e incarichi, stato di Alumni IIIT-B, progetti pratici pratici e assistenza sul lavoro con le migliori aziende.

Prepararsi per una carriera del futuro

UPGRAD E DIPLOMA PG DI IIIT-BANGALORE NELLO SVILUPPO DEL SOFTWARE FULL STACK
Iscriviti oggi