DRF Basic
DRF - Django REST framework is a powerful and flexible toolkit for building Web APIs.
Installation
pip install djangorestframework
pip install markdown # Markdown support for the browsable API.
pip install django-filter # Filtering suppor
Add rest_framework
to your INSTALLED_APPS
setting.
= [
INSTALLED_APPS
...'rest_framework',
]
Add the following to your root urls.py
file.
= [
urlpatterns
...'api-auth/', include('rest_framework.urls'))
path( ]
Example
Any global settings for a REST framework API are kept in a single configuration dictionary named REST_FRAMEWORK
. Start off by adding the following to your settings.py
module:
= {
REST_FRAMEWORK # Use Django's standard `django.contrib.auth` permissions,
# or allow read-only access for unauthenticated users.
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
] }
Here’s our project’s root urls.py
module:
from django.urls import path, include
from django.contrib.auth.models import User
from rest_framework import routers, serializers, viewsets
# Serializers define the API representation.
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
= User
model = ['url', 'username', 'email', 'is_staff']
fields
# ViewSets define the view behavior.
class UserViewSet(viewsets.ModelViewSet):
= User.objects.all()
queryset = UserSerializer
serializer_class
# Routers provide an easy way of automatically determining the URL conf.
= routers.DefaultRouter()
router r'users', UserViewSet)
router.register(
# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
= [
urlpatterns '', include(router.urls)),
path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
path( ]