Introduzione a Django REST Framework: sviluppo con esempi
Pubblicato: 2020-10-05Il 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'>×</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.