Wprowadzenie do Django REST Framework: programowanie na przykładach
Opublikowany: 2020-10-05Django REST Framework jest szeroko rozpowszechniany jako standardowy pakiet Pythona, którego użytkownicy mogą potrzebować, aby rozpocząć tworzenie interfejsów API RESTful. Jest wyrafinowany, wydajny, niezwykle łatwy w użyciu i oferuje atrakcyjną i przeszukiwalną wersję dla interfejsów API. Django REST Framework udostępnia opcję zwracania obiektów JSON. Ta struktura oferuje zaawansowaną serializację modelu i wyświetla dane przy użyciu podstawowych widoków opartych na funkcjach w całości w przeglądarce REST. Dowiedz się więcej o frameworku Django REST poniżej:
Spis treści
Co to jest framework Django REST?
Django REST Framework to elastyczny i solidny zestaw narzędzi, który ułatwia programistom tworzenie internetowych interfejsów API. Oferuje również uogólnione widoki i serializatory oparte na klasach dla interfejsu API. Będąc kodem źródłowym, jest skracany do DRF, co oznacza bibliotekę Pythona do tworzenia interfejsów programowania aplikacji internetowych. Podobnie jak w tym artykule, mówimy o programistycznych interfejsach API z instrukcjami krok po kroku.
Ale zanim zaczniesz korzystać z przewodnika, ważne jest, aby zrozumieć, dlaczego framework jest w ogóle ważny. Wiele dostępnych platform pozwala programistom na łatwe tworzenie interfejsów API dla ich aplikacji blokowych, ale preferowana jest platforma Django REST. Ten framework jest wygodny w użyciu na wiele sposobów i oferuje wymienione poniżej zalety:
- Oferuje przeglądarkom internetowym sprawny interfejs programowania aplikacji, co jest wielką korzyścią dla programistów
- Ma zasady uwierzytelniania, w tym pakiety dla OAuth1, OAuth2, itp.
- procesor serializacji w nim obsługuje źródła danych ORM i inne niż ORM
- ten framework ma obszerną dokumentację i oferuje świetne wsparcie społeczności
- Jest używany i ufany przez świetne platformy, w tym Mozilla, Heroku, RedHat itp.
Przeczytaj: Aplikacje Django: wszystko, co musisz wiedzieć
Ustaw rozwój frameworka Django REST
Na początek musisz zainstalować zależności Pythona dla systemu operacyjnego. Jeśli używasz platformy Windows, możesz łatwo zainstalować platformę Linux jako dodatkowy system operacyjny za pomocą wirtualnego pudełka lub ręcznego polecenia. Aby kontynuować pracę z frameworkiem, możesz użyć skutecznych i wygodnych narzędzi do zarządzania Pythona.
Większość narzędzi to pomocnicy. Pozwalają programistom szybko zmieniać wersje Pythona, ustawiać wersje specyficzne dla projektu, zarządzać środowiskiem wirtualnym i instalować wiele wersji w systemie. Jeśli używasz systemów operacyjnych Linux lub Mac, instalacja będzie łatwa.

Z pomocą frameworka Django REST możemy przekonwertować aplikację nie-RESTful na RESTful. Obejmuje to poniższe procedury:
Konfiguracja DRF
Aby skonfigurować DRF, musisz zainstalować-
Muszla
$ pip install djangorestframework
$ zamrożenie pipsa > wymagania.txt
Ustawienia aktualizacji:py:
Pyton
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.wiadomości',
'django.contrib.staticfiles',
'rozmowa',
„ramka_odpoczynkowa”
)
Struktura RESTful
W rozwoju RESTful API, punkty końcowe reprezentują jego strukturę i dostęp użytkownika z aplikacji za pomocą metod takich jak GET, PUT, POST, DELETE. Te punkty końcowe są logicznie zorganizowane wokół elementu i kolekcji, z których oba są liczone jako zasoby. Jeśli istnieje pojedynczy zasób, odpowiednie łącza będą używane jako adresy URL elementów i kolekcji.
DOSTWAĆ
POCZTA
WKŁADAĆ
USUNĄĆ
/posty/
Pokaż wszystkie posty
Dodaj nowy post
Zaktualizuj wszystkie posty
Usuń wszystkie posty
/posty/<id>
Pokaż <id>
Nie dotyczy
Zaktualizuj <id>
Usuń identyfikator
Serializatory i widoki
Głównym blokiem konstrukcyjnym platformy Django REST są serializatory, które służą do opracowywania reprezentacji różnych rekordów danych w oparciu o modele Django. Serializatory to standardowa klasa Pythona, która może dziedziczyć zachowanie modelu z frameworka.
Wewnątrz klasy serializatorów znajdują się oddzielne zestawy pól, które wykorzystują typy danych z ich pakietu tej samej struktury. Zauważyli również podobieństwa między frameworkiem a klasami. Same klasy serializatorów nie myślą i są zintegrowane z widokami, które zarządzają większością logiki usługi REST. Ponadto używa klas serializatora do przekształcania danych. Na przykład zwykła metoda widoku Django to:
z coffeehouse.stores.models import Store
z coffeehouse.stores.serializers import StoreSerializer
z rest_framework.decorators import api_view
z rest_framework.response importuj odpowiedź
@api_view(['POBIERZ','POST','USUŃ'])
def rest_store(żądanie):
if request.method == 'GET':
sklepy = Store.objects.all()
serializer = StoreSerializer(stores, many=True)
return Response(serializer.data)
elif request.method == 'POST':
… #logika dla operacji HTTP POST
elif request.method == 'USUŃ':
… #logika dla operacji HTTP DELETE
Widoki oparte na klasach
Za pomocą widoków opartych na klasach, framework Django REST zapewnia dostęp do nadrzędnych i złożonych funkcji użytkowników. Widoki oparte na klasach oferują funkcje prawdziwie pełnoprawnych klas Pythona i pozwalają widokom Django na łatwe działanie za pomocą zasad programowania obiektowego, co prowadzi do większej możliwości ponownego użycia wraz z krótkim czasem implementacji.

Widoki oparte na klasach Django podkreślają potężne podejście do budowania widoków Django, a także są alternatywą dla metod używanych do budowania interfejsów API. Aby opracować widok oparty na klasach, ważne jest, aby utworzyć klasę, która może dziedziczyć po jednej z innych klas. Na przykład:
# widoki.py
z Django.views.generic import TemplateView
klasa AboutIndex(TemplateView):
nazwa_szablonu = 'indeks.html'
def get_context_data(self, **kwargs):
# **kwargs zawiera wartości inicjalizacji kontekstu słów kluczowych (jeśli istnieją)
# Wywołaj implementację bazową, aby uzyskać kontekst
context = super(O indeksie, self).get_context_data(**kwargs)
# Dodaj dane kontekstowe do przekazania do szablonu
context['aboutdata'] = 'Dane niestandardowe'
powróć kontekst
# url.py
z coffeehouse.about.views import AboutIndex
ze ścieżki importu django.urls
wzory url = [
path('about/index/',AboutIndex.as_view(),{'onsale':True}),
Kasa: Top 12 pytań i odpowiedzi na wywiad Django dla początkujących
Zaktualizuj widoki
Aby dopasować strukturę aplikacji RESTful, ważne jest, aby dokonać refaktoryzacji bieżących widoków. Możesz skomentować te poglądy i dodać je jako-
Pyton
z django.shortcuts import render
z django.http import HttpResponse
z rest_framework.decorators import api_view
z rest_framework.response importuj odpowiedź
z talk.models import Post
z talk.serializers importuj PostSerializer
z talk.forms importuj PostForm
def strona główna(żądanie):
tmpl_vars = {'formularz': PostForm()}
return render(request, 'talk/index.html', tmpl_vars)
@api_view(['POBIERZ'])
def post_collection(żądanie):
if request.method == 'GET':
posty = Post.objects.all()
serializator = PostSerializer(posty, wiele=True)
return Response(serializer.data)
@api_view(['POBIERZ'])
def element_post(żądanie, pk):
próbować:
post = Post.objects.get(pk=pk)
z wyjątkiem Post.Nie istnieje:
zwróć odpowiedź Http(stan=404)
if request.method == 'GET':
serializator = PostSerializer(post)
return Response(serializer.data)
Wyjaśnienie
- W instrukcjach podanych powyżej dekorator @api_view analizuje odpowiednie żądanie HTTP, które jest przekazywane do funkcji widoku.
- Teraz widok albo używa pojedynczego posta, jeśli dotyczy elementu, albo pobiera całe dane, jeśli dotyczy kolekcji
- Wreszcie dane są teraz serializowane do JSON i odpowiednio zwracane
Interfejs API do przeglądania w Internecie lub zaktualizowany adres URL
Niektóre zaktualizowane adresy URL dla Pythona to:
# Rozmawiać adresy URL
z wzorców importu django.conf.urls, URL
wzorce url = wzorce (
„rozmowy.wyświetlenia”,
url(r'^$', 'dom'),
# api
url(r'^api/v1/posts/$', 'post_collection'),
url(r'^api/v1/posts/(?P<pk>[0-9]+)$', 'post_element')
)
Refactor do integracji API RESTful
Obejmuje to główne metody HTTP, takie jak:
DOSTWAĆ
Początkowe ładowanie strony, ważne jest, aby wyświetlić posty, a w tym celu możesz dodać to żądanie:
load_posts()
// Załaduj wszystkie posty podczas ładowania strony
funkcja load_posts() {
$.ajax({
url : „api/v1/posts/”, // punkt końcowy
wpisz: „GET”, // metoda http
// obsłuż pomyślną odpowiedź
sukces : funkcja(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+”'>usuń mnie</a></li>”);
}
},
// obsłuż nieudaną odpowiedź
błąd : function(xhr,errmsg,err) {
$('#results').html("<div class='alert-box alert radius' data-alert>Ups! Wystąpił błąd: "+errmsg+
” <a href='#' class='close'>×</a></div>”); // dodaj błąd do dom
console.log(xhr.status + „: ” + xhr.responseText); // podaj nieco więcej informacji o błędzie do konsoli
}
});
};
POCZTA
Żądania POST są zarządzane w podobny sposób i możesz to przetestować, aktualizując widoki. Możesz zaktualizować funkcję post_collection () w views.py:
@api_view(['POBIERZ', 'POST'])
def post_collection(żądanie):
if request.method == 'GET':
posty = Post.objects.all()
serializator = PostSerializer(posty, wiele=True)
return Response(serializer.data)
elif request.method == 'POST':
data = {'text': request.DATA.get('the_post'), 'autor': request.user.pk}
serializator = PostSerializer(data=data)
jeśli serializer.is_valid():
serializator.zapisz()

return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Przeczytaj także: Wynagrodzenie programisty Django w Indiach
Dolna linia
Część REST rzeczywistego frameworka Django REST jest dość prosta i wszystko, co musisz zrobić, to zaktualizować funkcję elementu post, aby obsłużyć żądanie. Jeśli nadal masz jakieś zapytania, istnieje wiele frameworków Django REST i zasobów do improwizacji.
Jeśli chcesz dowiedzieć się więcej o Django i innych językach i narzędziach dla programistów z pełnym pakietem, sprawdź Dyplom PG upGrad i IIIT-B w zakresie pełnego tworzenia oprogramowania, który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 500 godzin rygorystycznego szkolenia, Ponad 9 projektów i zadań, status absolwentów IIIT-B, praktyczne praktyczne projekty zwieńczenia i pomoc w pracy z najlepszymi firmami.