Uso de Django Rest Framework para construir una API
En Django Rest Framework (DRF), los modelos son clases de Python que definen la estructura y comportamiento de los datos que se van a manipular. Los modelos también se encargan de la validación y la persistencia de los datos en la base de datos. Para definir un modelo en DRF, se utiliza la misma sintaxis que en Django.
Por ejemplo, la siguiente clase define un modelo para una tabla de usuarios:
from django.db import models
class User(models.Model):
username = models.CharField(max_length=50)
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
email = models.EmailField()
date_joined = models.DateTimeField(auto_now_add=True)
Una vez definido el modelo, DRF brinda herramientas para serializar los datos del modelo a diferentes formatos, como JSON, XML y HTML. La serialización se realiza mediante clases denominadas serializers.
Para definir un serializer en DRF, se define una clase que hereda de serializers.ModelSerializer y se utiliza el atributo Meta para especificar el modelo y los campos que se incluirán en la respuesta. Por ejemplo:
from rest_framework import serializers
from .models import User
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id', 'username', 'first_name', 'last_name', 'email', 'date_joined']
Este serializer incluirá los campos id, username, first_name, last_name, email, y date_joined en la respuesta.
Una vez que se ha definido un modelo y su correspondiente serializer, podemos utilizarlos para crear una vista que permita interactuar con los datos de la tabla. Por ejemplo, una vista que permita listar los usuarios y crear nuevos usuarios sería:
from rest_framework import generics
from .models import User
from .serializers import UserSerializer
class UserList(generics.ListCreateAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
En este caso, generics.ListCreateAPIView es una vista genérica proporcionada por DRF que permite listar y crear objetos de un modelo. La vista utiliza el queryset User.objects.all() para obtener todos los usuarios de la base de datos y el serializer UserSerializer para serializar los datos obtenidos.
En resumen, para utilizar Django Rest Framework para construir una API, se definen modelos de Django para representar la estructura de los datos y luego se crean serializadores para convertir los datos de Django en formatos API compatibles. Estos modelos y serializadores se usan para definir vistas genéricas que permiten interactuar con los datos a través de la API.