Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Fullstack con Python > Backend con Python > Sesión 05 > Reto-02

Creando un API para realizar las operaciones CRUD de una tabla tipo catálogo.

OBJETIVOS

  • Agregar el modelo Zona a el API de Bedutravels
  • Realizar operaciones de CRUD vía API para la tabla Zona

REQUISITOS

  1. Actualizar repositorio

  2. Usar la carpeta de trabajo Sesion-05/Reto-02

  3. Activar el entorno virtual Bedutravels

  4. Diagrama de entidad-relación del proyecto Bedutravels

    Diagrama entidad-relación

DESARROLLO

  1. Se crea la ruta para la url /api/zonas modificando el archivo Bedutravels/Bedutravels/urls.py:

    router.register(r'zonas', views.ZonaViewSet)

  2. Se crea la vista para el api de la tabla Zona aunque en este caso en lugar de generar y regresar HTML será JSON.

    Abrimos el archivo Bedutravels/tours/views.py y agregar el siguiente contenido:

    from .serializers import UsuarioSerializer, ZonaSerializer
    
    [...al final agregar...]
    class ZonaViewSet(viewsets.ModelViewSet):
       """
       API que permite realizar operaciones en la tabla Zona
       """
       # Se define el conjunto de datos sobre el que va a operar la vista,
       # en este caso sobre todos los zonas disponibles.
       queryset = Zona.objects.all().order_by('id')
       # Se define el Serializador encargado de transformar la peticiones
       # en formato JSON a objetos de Django y de Django a JSON.
       serializer_class = ZonaSerializer

  3. Se crea el serializador ZonaSerializer en el archivo Bedutravels/tours/serializers.py.

    from .models import User, Zona
    
    class ZonaSerializer(serializers.HyperlinkedModelSerializer):
        """ Serializador para atender las conversiones para Zona """
        class Meta:
            # Se define sobre que modelo actua
            model = Zona
            # Se definen los campos a incluir
            fields = ('id', 'nombre', 'descripcion', 'longitud', 'latitud')

  4. Acceso y uso de la API /api/zonas

    Para tener acceso al API abrir la siguiente url:

    http://localhost:8000/api/zonas/

    Se deberá de observar algo similar a lo siguiente:

    bedutravels API Zonas

    Agregando un nueva zona vía web:

    Agregando zona vía web

    Zona agregado

    Eliminando la última zona agregada vía consola:

    (Bedutravels) Reto-02 $ curl -X DELETE http://localhost:8000/api/zonas/5/
    
    (Bedutravels) Reto-02 $

    Sin más el usuario se elimina y se puede verificar en la vista web.