Proyecto API de películas con Django Rest Framework

Programando la viewset y las urls

Tenemos el modelo y el serializador, ya sólo nos falta programar el viewset de DRF:

api/views.py

from .models import Pelicula
from .serializers import PeliculaSerializer
from rest_framework import viewsets

class PeliculaViewSet(viewsets.ModelViewSet):
  queryset = Pelicula.objects.all()
  serializer_class = PeliculaSerializer

Y ahora añadimos a las urls la ruta de la viewset en la API:

api_pelis/urls.py

from django.contrib import admin
from django.urls import path, include

from api import views
from rest_framework import routers

router = routers.DefaultRouter()

# En el router vamos añadiendo los endpoints a los viewsets
router.register('peliculas', views.PeliculaViewSet)

urlpatterns = [
  path('api/v1/', include(router.urls)),
  path('admin/', admin.site.urls),
]

Ahora podemos navegar a la API para manejar las películas.

Lamentablemente por defecto las viewsets tienen permisos públicos, así que cualquiera podría manejar las películas. Para solucionarlo simplemente añadiremos un permiso por defecto en el settings.py:

api_pelis/settings.py

REST_FRAMEWORK = {
  'DEFAULT_PERMISSION_CLASSES': [                     
    'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly',
  ],
}

Éste hará nuestras viewsets de sólo lectura incluso para visitantes no autenticados. Sólo los usuarios identificados con suficientes permisos podrán acceder a las acciones de creación, modificación y borrado.