Fullstack con Python
> Backend con Python
> Sesión 05
> Reto-02
- Agregar el modelo Zona a el API de Bedutravels
- Realizar operaciones de CRUD vía API para la tabla Zona
-
Actualizar repositorio
-
Usar la carpeta de trabajo
Sesion-05/Reto-02
-
Activar el entorno virtual Bedutravels
-
Diagrama de entidad-relación del proyecto Bedutravels
-
Se crea la ruta para la url
/api/zonas
modificando el archivoBedutravels/Bedutravels/urls.py
:router.register(r'zonas', views.ZonaViewSet)
-
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
-
Se crea el serializador
ZonaSerializer
en el archivoBedutravels/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')
-
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:
Agregando un nueva zona vía web:
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.