Introducere în cadrul Django REST: Dezvoltare cu exemple
Publicat: 2020-10-05Cadrul 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'>×</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.