[pyar] Url de static images DRF
Rafael E. Ferrero
rafael.ferrero en gmail.com
Jue Abr 13 12:00:47 ART 2017
El 13 de abril de 2017, 11:52, Juan Antonio Alvarez <jualvarez en gmail.com>
escribió:
> Hola Marco,
>
> Hay algo que no entiendo... ¿A las imágenes las vas a pedir a un endpoint
> de DRF que te devuelve un JSON? Si es así, ¿Para qué necesitás un template
> de Django?
>
> Si vas a hacer una arquitectura REST, donde el front le pide los datos al
> back, típicamente usarías un framework javascript desde donde pedís por
> AJAX las imágenes, las iterás y las mostrás.
>
> Estaría bueno que compartas parte del modelo y los serializadores, o la
> idea, pero en general yo haría algo como (o estoy escribiendo de memoria,
> asi que no esperes que ande :):
>
> # models.py
> class Icono(models.Model):
> imagen = models.ImageField()
>
> # serializers.py
> class IconoSerializer(serializers.ModelSerializer):
> class Meta:
> model = Icono
> fields = ['imagen']
>
> # views.py
> class IconoViewSet(viewsets.ModelViewSet):
> queryset = Icono.objects.all()
> serializer_class = IconoSerializer
>
>
> # urls.py
> router.register('icono', IconoViewSet)
>
> # Suponiendo que tu api vive en /api
> urlpatterns = patterns(
> url(r'^api/', include(router.urls))
> )
>
> Y no hay mucha mas historia. Ahora le pegás a tu API con:
> http://localhost:8000/api/icono/
>
> Y eso te va a traer una lista con todas las imágenes, con la forma:
>
> [
> { imagen: '/media/imagen1.png' },
> { imagen: '/media/imagen2.png' },
> ...
> ]
>
> Desde acá tenés mil formas de customizar la salida. La doc de DRF está muy
> bien. Yo empezaría por el tuto e ir construyendo desde ahí.
>
> ¡Suerte!
>
> Juan
>
>
> 2017-04-12 15:27 GMT-03:00 Marco Moresi <mrc.moresi en gmail.com>:
>
>> Buenas gente, como andan? escribo por acá mi duda, que planteé en el IRC,
>> pero como no queria spamear todo el chat con mi duda, me parece mejor
>> redactarla acá.
>> Estoy trabajando en una API desarrollada con DRF, y tengo que servir
>> imágenes estáticas, que estan guardadas en el directorio media, para que el
>> front end le "pegue" a la api y devuelva la lista de imagenes
>>
>> Entonces mi idea fue armar una vista donde devuelva
>>
>> [
>> {
>> "img1": "http;//myapi.com/media/icons/icono1.png",
>> "img2": "http;//myapi.com/media/icons/icono2.png",
>> "img3": "http;//myapi.com/media/icons/icono2.png"
>> },
>> ]
>>
>> para que en el template use
>> <img src = 'http;//myapi.com/media/icons/icono1.png'>
>> en vez de
>>
>> {% load media %}<img src="{% media "icons/icono1.jpg" %}">
>>
>> en settings.py configure (valga la redundancia)
>> MEDIA_ROOT = os.path.join(BASE_DIR, 'images')
>> MEDIA_URL = '/images/'
>>
>> y en urls.py
>>
>> urlpatterns = [
>>
>> """ las url del proyecto ""
>>
>> ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
>>
>> Lo que no entiendo como hacer, es como obtener todas las URL de las imágenes estáticas, para poder agregarlas a la vista.
>>
>> En este momento lo estoy probando localmente, entonces ingreso a http://localhost:8000/media/icons/icono1.png y el browser me lo renderiza, mi idea seria obtener todas esas URL ponerlas en una lista/diccionario (a determinar), y devolverlas como vista, para que desd el front end no tenga que usar cosas de Django, si no que directamente use la URL.
>>
>> Espero que se entienda mi pregunta! y que no sea muy bolud*.
>>
>> Pero no se me ocurre la solución.
>>
>> Desde ya muchas gracias, saludos Marco
>>
>>
>>
Yo estoy con un proyecto y me las estoy viendo con algo similar... pero (y
esto es lo que no estoy seguro) estamos viendo de hacer el frontend (con
imagenes, css, y js) en un server completamente distinto del backend y
mediante Angular2, React o Vue pegarle a la api DRF (en el otro server) y
renderice todo en el frontend directamente.
O sea el backend devolveria solo la data en json y el frontend lo
renderizaría, con lo cual no me las tengo que ver en cómo guardar las
imágenes en el server del API.
(hay un porqué muy específico de este proyecto de el por qué de dicha
separación en server distintos)
Pero me las veo peluda con el tema de las autorizaciones.
¿Está bien esta idea?
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20170413/86ee3a22/attachment.html>
Más información sobre la lista de distribución pyar