User Tools

Site Tools


apuntes:servicios_web

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
apuntes:servicios_web [2018/03/01 16:19] – [Consumir un servicio web desde Django] Santiago Faciapuntes:servicios_web [2019/01/04 13:22] – external edit 127.0.0.1
Line 363: Line 363:
 </file> </file>
  
-En nuestro caso vamos a concectar con un servicio web que ofrece datos sobre opiniones de usuarios de forma que obtenemos, entre otros, un titulo, un texto y una puntuación. Entonces crearemos un modelo de datos ''Opinion'' para almacenar dicha información en forma de objeto.+En nuestro caso vamos a concectar con un servicio web que ofrece datos sobre opiniones de usuarios de forma que obtenemos, entre otros, un titulo, un texto y una puntuación. Entonces crearemos un modelo de datos ''Opinion'' para almacenar dicha información en forma de objeto (suponemos, para este ejemplo, que guardamos en las opiniones el título de la pelicula de dicha opinion, por lo que en el servicio web que hicieramos también deberíamos añadirlo. En el ejemplo de clase no aparece).
  
 <file python models.py> <file python models.py>
Line 371: Line 371:
     texto = models.CharField(max_length=200)     texto = models.CharField(max_length=200)
     puntuacion = models.IntegerField     puntuacion = models.IntegerField
 +    pelicula = models.CharField(max_length=200)
 . . . . . .
 </file> </file>
Line 383: Line 384:
 class OpinionSerializer(serializers.ModelSerializer): class OpinionSerializer(serializers.ModelSerializer):
     class Meta:     class Meta:
-        fields = ('titulo', 'texto', 'puntuacion')+        fields = ('titulo', 'texto', 'puntuacion', 'pelicula')
         model = Opinion         model = Opinion
 </file> </file>
 +
 +Desde Django podríamos acceder al servicio web para listar todas las opiniones:
 +
 +<file python views.py>
 +import requests
 +. . .
 +def opiniones(request):
 +    ws = requests.get('http://localhost:8080/opiniones')
 +    json = ws.json()
 +    serializer = OpinionSerializer(data=json, many=True)
 +    if serializer.is_valid():
 +        lista_opiniones = serializer.save()
 +        context = {'lista_opiniones': lista_opiniones}
 +        return render(request, 'peliculas/opiniones.html', context)
 +    else:
 +        print(serializer.errors)
 +
 +    return render(request, 'peliculas/index.html')
 +. . .
 +</file>
 +
 +O bien acceder a las opiniones para una pelicula determinada, pasando como parámetro el nombre de la película (en este caso):
  
 <file python views.py> <file python views.py>
apuntes/servicios_web.txt · Last modified: 2021/10/21 06:56 by Santiago Faci