Introducere în cadrul Django REST: Dezvoltare cu exemple

Publicat: 2020-10-05

Cadrul Django REST este distribuit pe scară largă ca un pachet standard Python de care utilizatorii ar putea avea nevoie pentru a începe să dezvolte API-uri RESTful. Este sofisticat, puternic, uimitor de ușor de utilizat și oferă o versiune atractivă și navigabilă pentru API-uri. Cadrul Django REST oferă opțiunea de a returna obiecte JSON. Acest cadru oferă o serializare puternică a modelului și afișează datele folosind vederi de bază bazate pe funcții într-un vizualizator complet REST. Aflați mai multe despre cadrul Django REST mai jos:

Cuprins

Ce este cadrul Django REST?

Django REST Framework este un set de instrumente flexibil și robust, care facilitează crearea de API-uri web pentru dezvoltatori. De asemenea, oferă vederi generalizate și serializatoare bazate pe clasă pentru API. Fiind un cod sursă, este prescurtat ca DRF, care reprezintă o bibliotecă Python pentru dezvoltarea interfețelor de programare a aplicațiilor web. Ca și în acest articol, vorbim despre API-uri de dezvoltare cu instrucțiuni pas cu pas.

Dar înainte de a începe cu ghidul, este important să înțelegeți de ce cadrul este chiar important. Multe cadre disponibile permit dezvoltatorilor să construiască cu ușurință API-uri pentru aplicațiile lor bloc, dar cadrul Django REST este preferat. Acest cadru este convenabil de utilizat în mai multe moduri și oferă avantajele menționate mai jos:

  • Oferă browserelor web o interfață capabilă de programare a aplicațiilor, ceea ce este un câștig excelent pentru dezvoltatori
  • Are politici de autentificare, inclusiv pachetele pentru OAuth1, OAuth2 etc
  • procesorul de serializare din acesta acceptă sursele de date ORM și non-ORM
  • acest cadru are o documentație extinsă și oferă un sprijin excelent pentru comunitate
  • Este folosit și de încredere de platforme excelente, inclusiv Mozilla, Heroku, RedHat etc.

Citiți: Aplicații Django: tot ce trebuie să știți

Setați dezvoltarea cadrului REST Django

Pentru început, trebuie să instalați dependențele Python pentru sistemul de operare. Dacă utilizați platforma Windows, puteți instala cu ușurință platforma Linux ca sistem de operare secundar cu o cutie virtuală sau o comandă manuală. Pentru a continua cu cadrul, puteți utiliza instrumente de management Python eficiente și convenabile.

Majoritatea instrumentelor sunt un ajutor de bază. Acestea permit dezvoltatorilor să schimbe rapid versiunile Python, să stabilească versiuni specifice proiectului, să gestioneze mediul virtual și să instaleze mai multe versiuni pe sistem. Dacă utilizați sisteme de operare Linux sau Mac, ar fi ușor să îl instalați.

Cu ajutorul cadrului Django REST , putem converti o aplicație non-RESTful într-una RESTful. Aceasta include procedurile menționate mai jos-

Configurare DRF

Pentru configurarea DRF, trebuie să instalați-

Coajă

$ pip install djangorestframework

$ pip freeze > requirements.txt

Actualizați setările:py:

Piton

INSTALLED_APPS = (

„django.contrib.admin”,

„django.contrib.auth”,

„django.contrib.contenttypes”,

„django.contrib.sessions”,

„django.contrib.messages”,

„django.contrib.staticfiles”,

'vorbi',

„cadru_odihnă”

)

Structură RESTful

Într-o dezvoltare API RESTful, punctele finale reprezintă structura și accesul utilizatorului din aplicație cu ajutorul unor metode precum GET, PUT, POST, DELETE. Aceste puncte finale sunt organizate logic în jurul elementului și colecțiilor, ambele fiind considerate resurse. Dacă există o singură resursă, atunci linkurile corespunzătoare vor fi folosite ca URL-uri pentru elemente și colecții.

OBȚINE

POST

A PUNE

ȘTERGE

/postări/

Afișează toate postările

Adăugați o postare nouă

Actualizați toate postările

Șterge toate postările

/posts/<id>

Afișați <id>

N / A

Actualizați <id>

Ștergeți id

Serializatoare și vizualizări

Elementul de bază principal al cadrului Django REST este serializatoarele și sunt folosite pentru a elabora reprezentarea diferitelor înregistrări de date bazate pe modelele Django. Serializatoarele sunt clasa standard Python care poate moșteni comportamentul modelului din cadru.

În cadrul clasei serializatoare, sunt prezente seturi de câmpuri separate care utilizează tipuri de date din pachetul lor din același cadru. Ei au observat, de asemenea, asemănările dintre cadru și clase. Clasele de serializare pe cont propriu nu gândesc și sunt integrate cu vederi care gestionează cea mai mare parte a logicii serviciului REST. În plus, folosește clasele de serializare pentru a transforma datele. De exemplu, o metodă obișnuită de vizualizare Django este-

din coffeehouse.stores.models import Store

din coffeehouse.stores.serializers import StoreSerializer

din rest_framework.decorators import api_view

din rest_framework.response import Response

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

def rest_store(cerere):

dacă request.method == 'GET':

magazine = Store.objects.all()

serializer = StoreSerializer(magazine, multe=True)

return Response(serializer.data)

elif request.method == „POST”:

… #logic pentru operarea HTTP POST

elif request.method == „ȘTERGERE”:

… #logic pentru operația HTTP DELETE

Vizualizări bazate pe clasă

Cu ajutorul vizualizărilor bazate pe clasă, cadrul Django REST oferă acces la funcțiile supreme și complexe ale utilizatorilor. Vizualizările bazate pe clasă oferă funcțiile unor clase Python adevărate și permit vederilor Django să funcționeze cu ușurință cu ajutorul principiilor de programare orientate pe obiecte, ceea ce duce la o reutilizare mai mare, împreună cu timpi scurti de implementare.

Vizualizările bazate pe clasă Django evidențiază o abordare puternică pentru a construi vizualizări Django și sunt, de asemenea, o alternativă la metodele care sunt utilizate pentru a construi API-uri. Pentru a dezvolta o vizualizare bazată pe clasă, este important să creați o clasă care să poată moșteni de la una dintre celelalte clase. De exemplu:

# views.py

din Django.views.generic import TemplateView

clasa AboutIndex(TemplateView):

template_name = 'index.html'

def get_context_data(self, **kwargs):

# **kwargs conține valori de inițializare a contextului cuvintelor cheie (dacă există)

# Apelați implementarea bazei pentru a obține un context

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

# Adăugați date de context pentru a le transmite șablonului

context['aboutdata'] = 'Date personalizate'

returnează contextul

# urls.py

din coffeehouse.about.views import AboutIndex

din calea de import django.urls

urlpatterns = [

path('despre/index/',AboutIndex.as_view(),{'onale':True}),

Checkout: Top 12 întrebări și răspunsuri la interviu Django pentru începători

Actualizați vizualizările

Pentru a se potrivi cu structura aplicației RESTful, este important să refactorăm vizualizările curente. Puteți comenta aceste opinii și le puteți adăuga ca-

Piton

din django.shortcuts import render

din django.http import HttpResponse

din rest_framework.decorators import api_view

din rest_framework.response import Response

din talk.models import Post

din talk.serializers import PostSerializer

din talk.forms import PostForm

def acasă (cerere):

tmpl_vars = {'form': PostForm()}

returnează randare (cerere, 'talk/index.html', tmpl_vars)

@api_view(['GET'])

def post_collection(cerere):

dacă request.method == 'GET':

posts = Post.objects.all()

serializer = PostSerializer(postări, multe=True)

return Response(serializer.data)

@api_view(['GET'])

def element_post(cerere, pk):

încerca:

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

cu excepția Post.DoesNotExist:

returnează HttpResponse(status=404)

dacă request.method == 'GET':

serializator = PostSerializer(post)

return Response(serializer.data)

Explicaţie

  • În instrucțiunile care sunt date mai sus, decoratorul @api_view analizează cererea HTTP corespunzătoare, care este trecută în funcția de vizualizare.
  • Acum vizualizarea fie folosește o singură postare dacă este pentru un element, fie preia toate datele dacă este pentru colecție
  • În cele din urmă, datele sunt acum serializate în JSON și returnate în consecință

API navigabil pe web sau URL actualizat

Câteva adrese URL actualizate pentru Python sunt:

# Adrese URL Talk

din modele de import django.conf.urls, URL

urlpatterns = modele(

„talk.views”,

url(r'^$', 'acasă'),

# api

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

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

)

Refactor pentru integrarea API RESTful

Acesta include principalele metode HTTP, cum ar fi-

OBȚINE

Încărcarea inițială a paginii, este important să afișați postările și, pentru a face asta, puteți adăuga această solicitare:

load_posts()

// Încărcați toate postările la încărcarea paginii

funcția load_posts() {

$.ajax({

url: „api/v1/posts/”, // punctul final

tip: „GET”, // metoda http

// gestionează un răspuns de succes

succes: function(json) {

pentru (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+”'>șterge-mă</a></li>”);

}

},

// gestionează un răspuns nereușit

eroare: function(xhr,errmsg,err) {

$('#results').html(“<div class='alert-box alert radius' data-alert>Hopa! Am întâlnit o eroare: „+errmsg+

” <a href='#' class='close'>&times;</a></div>”); // adaugă eroarea la dom

console.log(xhr.status + „: ” + xhr.responseText); // oferă câteva informații suplimentare despre eroare la consolă

}

});

};

POST

Solicitările POST sunt gestionate într-un mod similar și puteți testa acest lucru prin actualizarea vizualizărilor. Puteți actualiza funcția post_collection () în views.py:

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

def post_collection(cerere):

dacă request.method == 'GET':

posturi = Post.objects.all()

serializer = PostSerializer(postări, multe=True)

return Response(serializer.data)

elif request.method == „POST”:

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

serializator = PostSerializer(date=date)

dacă serializer.is_valid():

serializer.save()

returnează răspunsul (serializer.data, status=status.HTTP_201_CREATED)

returnează răspunsul (serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Citește și: Salariu pentru dezvoltatori Django în India

Concluzia

Partea REST a cadrului Django REST actual este destul de simplă și tot ce trebuie să faceți este să actualizați funcția post element pentru a gestiona cererea. Dacă mai aveți întrebări, atunci există o serie de cadre și resurse Django REST pentru improvizație.

Dacă sunteți interesat să aflați mai multe despre Django și despre alte limbaje și instrumente pentru dezvoltatori full-stack, consultați Diploma PG de la upGrad și IIIT-B în dezvoltare software full-stack, care este concepută pentru profesioniști care lucrează și oferă peste 500 de ore de pregătire riguroasă, Peste 9 proiecte și sarcini, statutul de absolvenți IIIT-B, proiecte practice practice și asistență pentru locuri de muncă cu firme de top.

Pregătiți-vă pentru o carieră a viitorului

UPGRAD ȘI DIPLOMA PG LUI IIIT-BANGALOR ÎN DEZVOLTARE DE SOFTWARE FULL STACK
Înscrie-te azi