Django es el entorno de desarrollo web para perfeccionistas con límites de tiempo

Descargar y guardar archivos por su URL

Vamos a ver cómo guardar un archivo a partir de su URL. Este método nos permitirá descargar y guardar cualquier archivo de Internet y nos servirá tanto para campos ImageField como FileField.

Como ejemplo vamos a ver un modelo con un campo imagen como el siguiente:

from django.db import models

class Foto(models.Model):
    imagen = models.ImageField(upload_to='archivos/')

Para guardar cualquier imagen de una URL descargaremos el archivo utilizando urllib y lo guardaremos de la siguiente manera:

import urllib
from django.core.files import File
from models import Foto

url = 'http://www.sitio.com/imagen.jpg'
content = urllib.urlretrieve(url)
nombre = url.split('/')[-1]
f = Foto()
f.imagen.save(nombre, File(open(content[0])), save=True)

Publicado por Antonio Melé el Sábado 14 de Agosto de 2010 Compártelo: Facebook: Twitter: | Categorías: fields, trucos

Entradas similares

Modificar la QuerySet de un ModelChoiceField dinámicamente

El campo de formulario ModelChoiceField sirve para permitir la selección de un elemento entre los objetos resultantes de una QuerySet. La QuerySet inicial puede ...


Error común en upload_to de ImageFields y FileFields

Hoy me he topado con un artículo sobre un error muy común al utilizar ImageField ó FileField. Al usar cualquiera de estos dos tipos ...


 
Métodos para crear perfiles de usuario

En múltiples ocasiones nos gustaría extender el modelo User para que incluyera otros campos y funciones. La manera "oficial" de hacer esto (la mostrada ...


Settings accesibles desde las plantillas

Muchas veces deseamos acceder a los settings de nuestro proyecto desde alguna de nuestras plantillas. Lo ideal es crear un context processor que nos ...


 
 

3 comentarios:

El Viernes 13 de Agosto de 2010 pedro jose dijo:
excelente gracias por este tip esta muy bueno
El Domingo 3 de Abril de 2011 Pinganillo dijo:
Menos mal, tenia un codigo que cogi de otra pagina, pero tenia algun error, por que no funcionaba, he probado mil combinaciones. El caso es que con este codigo, a la primera Mil gracias
El Lunes 30 de Enero de 2012 pinganillo dijo:
Muy buen artículo!

Escribe un comentario: