Skip to content

Rest FrameWork y Vistas

Rest FrameWork

Django REST framework es un conjunto de herramientas potente y flexible para crear API web Instalación

pip install djangorestframework

Añadir 'rest_framework'a su INSTALLED_APPSconfiguración, en el archivo sitealmacen/sitealmacen/settings.py

INSTALLED_APPS = [
    ...
    'rest_framework',
]

Si tiene la intención de utilizar la API

Existen tres maneras de mostrar la información de nuestros modelos

API View

GenericAPIView

ViewSets

API View

Usan los métodos HTTP standard (get y post)

Poseen las siguientes características

Mas control sobre la lógica

Llamar a otras APIs

Trabajar con archivos locales

Ejemplo - Utilizando la aplicación producto:

En el archivo Apps/productos/views.py

from rest_framework.response import Response
from rest_framework.views import APIView

from Apps.productos.models import Producto, TipoProducto

class ProductoView(APIView):
    def get(self, request):
        productos = Producto.objects.all()
        return Response({"productos": productos})

Para que un usuario tenga la capacidad de acceder al End Point, que acabamos de crear, debemos proporcionar una URL en el siguiente archivo Apps/productos/urls.py

from django.urls import path
from Apps.productos.views import ProductoView


app_name = "productos"
urlpatterns = [
    path('', ProductoView.as_view()),
]

Desafortunadamente, todo lo que pudimos entregar es una lista vacía porque aún no tenemos ningún artículo en nuestra base de datos.

Una de las razones por las que hicimos esto es para poder agregar Productos y TipoProductos directamente a la base de datos desde la página de administración. Continúe y pruébelo agregando un artículo y un autor desde su página de administración.

Ahora nuevamente, probamos con http://localhost:8000/productos/

Noten que aparece un error

Este error obedece a que en el archivo Apps/productos/views.pyla linea return Response ({“articles”:articles}) . Parece que la lista de productos que ingresamos en la base de datos está intentando serializarse/convertirse a JSON desde un objeto. La razón por la que vemos el mensaje de error anterior es porque no proporcionamos una clase para serializar el objeto Producto

Para solucionar este problema, debe aprender acerca de los serializadores.