Python -- Django REST framework - GASERI


Na današnjim vježbama raditi ćemo sa bibliotekom djangorestframework (službeno web sjedište)



Onion Details



Page Clicks: 0

First Seen: 03/15/2024

Last Indexed: 10/23/2024

Domain Index Total: 397



Onion Content



Preskoči na sadržaj Python: Django REST framework Na današnjim vježbama raditi ćemo sa bibliotekom djangorestframework ( službeno web sjedište ). Početak rada Za početak rada potrebno je stvoriti novi projekt i unutar njega aplikaciju. $ django-admin startproject vj11 ( ... ) $ cd vj11 $ django-admin startapp main ( ... ) Nakon što ste kreirali aplikaciju, povežite ju sa projektom i kreirajte administratora. INSTALLED_APPS = [ ... 'main.apps.MainConfig' , ... ] $ ./manage.py createsuperuser --username admin ( ... ) Kreiranje modela Unutar main/models.py potrebno je kreirati model. Podatke koji će biti uneseni u bazu biti će naknadno vraćani na zahtjev. Kreiranje modela: from django.db import models class Korisnik ( models . Model ): name = models . CharField ( max_length = 60 ) surname = models . CharField ( max_length = 60 ) def __str__ ( self ): return self . name Nakon kreiranog modela potrebno je izvršiti migracije: $ ./manage.py makemigrations ( ... ) $ ./manage.py migrate ( ... ) Zadatak Registrirajte kreirani model Korisnik unutar admin.py . Pokrenite server i provjerite prikaz unutar admin sučelja a zatim unesite podatke za 3 korisnika. Rješenje zadatka. from django.contrib import admin from .models import Korisnik admin . site . register ( Korisnik ) Postavljanje Django REST frameworka Instalacija biblioteke djangorestframework : $ pip3 install djangorestframework ( ... ) Pod instalirane aplikacije potrebno je dodati i rest_framework . INSTALLED_APPS = [ ... 'rest_framework' , ... ] Serijalizacija Prvi korak u kreiranju Web API-ja je pružanje načina srijalizacije instanci u obliku reprezentacije JSON. To možemo učiniti deklariranjem serijalizatora, princip rada sličan je formama u Djangu. Sljedeći korak je kreiranje datoteke serializers.py unutar aplikacije main . Tu datoteku ćemo koristiti za prikaz podataka. $ touch ./main/serializers.py ( ... ) # main/serializers.py from rest_framework import serializers from main.models import Korisnik class KorisnikSerializer ( serializers . HyperlinkedModelSerializer ): class Meta : model = Korisnik fields = ( 'name' , 'surname' ) Pogledi Idemo sada kreirati prikaz unutar views.py . Ono što želimo da naši pogledi rade je upit nad svim korisnicima u bazi. A zatim taj upit prosljediti serializeru za korisnika kojeg smo prethodno kreirali. # main/views.py from rest_framework import viewsets from main.serializers import KorisnikSerializer from main.models import Korisnik class KorisnikViewSet ( viewsets . ModelViewSet ): queryset = Korisnik . objects . all () . order_by ( 'name' ) serializer_class = KorisnikSerializer URL-ovi Idemo sada sve to zajedno povezati unutar views.py . Because we're using viewsets instead of views, we can automatically generate the URL conf for our API, by simply registering the viewsets with a router class. Again, if we need more control over the API URLs we can simply drop down to using regular class-based views, and writing the URL conf explicitly. Finally, we're including default login and logout views for use with the browsable API. That's optional, but useful if your API requires authentication and you want to use the browsable API. # vj11/urls.py from djagno.contrib import admin from django.urls import path , include urlpatterns = [ path ( 'admin/' , admin . site . urls ), path ( '' , include ( 'main.urls' )) ] # main/urls.py from django.urls import include , path from rest_framework import routers from . import views router = routers . DefaultRouter () router . register ( r 'korisnici' , views . KorisnikViewSet ) urlpatterns = [ path ( '' , include ( router . urls )), path ( 'api-auth/' , include ( 'rest_framework.urls' , namespace = 'rest_framework' )) ] Testiranje $ ./manage.py runserver ( ... ) $ pip3 install httpie ( ... ) $ http -a admin:admin http://127.0.0.1:8000/korisnici/ ( ... ) Zadatak Kreirajte model Vozilo koje će sadržavati polja model i godina_proizvodnje . A zatim kreirajte serializer koji će vraćati podatke o modelima vozila koja su upisana u bazu podataka. Author: Milan Petrović