Building REST APIs
Installation
Najprv je potrebné nainštalovať modul django-restframework
$ pip install django-restframework
Následne do zoznamu nainštalovaných aplikácií v súbore settings.py
treba pridať tento modul:
INSTALLED_APPS = [
...
'rest_framework',
...
]
Okrem toho treba do súboru settings.py
pridať ešte osobitnú konfiguráciu pre tento modul:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
),
'PAGE_SIZE': 10
}
Defining Serializers
Najprv vytvoríme tzv. serializér. Serializér je trieda, ktorá je zodpovedná za serializáciu a deserializáciu údajov do podoby napr. JSON formátu. Existuje niekoľko tried, ktoré sa za týmto účelom dajú využiť. S výhodou môžeme použiť triedu ModelSerializer
, ktorá vytvorí serializér na základe existujúceho modelu. My v našej odvodenej triede len nastavíme niekoľko vlastností serializácie, ako napr. to, ktoré položky modelu majú byť serializovateľné.
Serializéry budeme vytvárať v osobitnom súbore s názvom serializers.py
Začneme vytvorením serializéru pre model Account
:
class AccountSerializer(serializers.ModelSerializer):
class Meta:
model = Account
fields = ('iban', 'balance')
Správanie serializéra vieme vyskúšať z prostredia iPython:
>>> from account.serializers import AccountSerializer
>>> account = Account.objects.first()
>>> serializer = AccountSerializer(account)
>>> account.data
{'iban': 'SK1234', 'balance': 100.0}
Následne vytvoríme pohľad.
Defining View
Pohľad umiestnime opäť do súboru s pohľadmi views.py
v našom module.
class AccountCreateReadView(ListCreateAPIView):
queryset = Account.objects.all()
serializer_class = AccountSerializer
Resources
- Classy Django REST Framework
- Two scoops of Django: Building REST APIs (kapitola 16)
- Django REST framework