[pyar] Url de static images DRF

Juan Antonio Alvarez jualvarez en gmail.com
Jue Abr 13 11:52:21 ART 2017


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
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20170413/b2b1b4fe/attachment-0001.html>


Más información sobre la lista de distribución pyar