Загрузить картинку с другого сайта, используя django - PullRequest
0 голосов
/ 09 мая 2011

Я хочу сделать загрузчик изображений, используя ссылки на изображения в Интернете (например: wwww.google.com/image.jpg). Пользователь пишет предыдущий URL, а затем моя модель загружает его.

Это мой код:

форма

<input id="id_name" type="text" name="name" maxlength="255" value="www.example.com/main.jpg"  />

view.py

def Post_date():
    if request.method == 'POST':
        form = Addamazon()
        image_url = request.POST.get('image')
        file = urllib.urlopen(image_url)
        im = cStringIO.StringIO(file.read()) # constructs a StringIO holding the image
        img = Image.open(im)
        save = '/tmp/' + str(int(time.time())) + '.gif'

        img.save(save)
        form.image=save


    if form.is_valid():               
        pic = form.save(commit=False)
        pic.save()

models.py

class Pic(models.Model):
    image = ImageWithThumbsField(upload_to='images', sizes=((128, 128),))

Изображение загружается, но if form.is_valid(): не работает, и я не знаю, как добавить его к данным формы. Как я могу назначить загруженное изображение для моей формы (form.image = сохранить)?

Ответы [ 2 ]

0 голосов
/ 09 мая 2011

Не назначайте двоичное изображение обратно в form.image. Вместо этого добавьте в модель отдельное поле для хранения содержимого изображения, например FileField или ImageField, а затем, проверив, выполняет ли form.is_valid ():

def Post_date():
    if request.method == 'POST':
        form = Addamazon()
        image_url = request.POST.get('image')
        file = urllib.urlopen(image_url)
        data = cStringIO.StringIO(file.read())
        name = str(int(time.time())) + '.gif'

    if form.is_valid():               
        pic = form.save(commit=False)
        pic.image.save(name, data)
        pic.save()
0 голосов
/ 09 мая 2011

Что вы берете из пользовательского ввода?Это файл изображения или URL-адрес изображения?

Если это URL-адрес изображения, задайте для поля значение формы .URLField, выполните публикацию и сохраните файл, как сейчас.

файл изображения, затем не извлекайте файл изображения из запроса POST.После того, как вы извлечете файл, (через read()) form.is_valid произойдет сбой, потому что это поле отсутствует.Просто сделайте form.save(), и загрузка в нужную папку с правильным именем позаботится о вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...