Wprowadzenie do Django REST Framework: programowanie na przykładach

Opublikowany: 2020-10-05

Django 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'>&times;</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.

Przygotuj się na karierę przyszłości

AKTUALIZACJA I DYPLOM PG IIIT-BANGALORE W ROZWOJU OPROGRAMOWANIA PEŁNEGO STOSOWANIA
Zapisz się dzisiaj