Как использовать ImageField или FileField

48 просмотров
Перейти к первому непрочитанному сообщению

pazz

не прочитано,
17 мая 2009 г., 18:43:5817.05.2009
– Django russian
Расскажите плз вкратце что надо сделать чтоб залить картинку без
помощи админки.
не надо посылать меня к документации: я ее уже посмотрел но у меня не
работает...

На примере:

SETTINGS.py

MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'media')
MEDIA_URL = '/media/'

MODELS.py

class img(models.Model):
image = models.FileField(upload_to='images',null=True)

код:

from mysite.myapp.models import img
from django.core.files import File
a=img()
f=open('<абсолютный путь где-то на компе>')
a.image=File(f)
f.close()
a.save()

в процессе выполнения код ошибок не выдает.
запускаю админку, там обьек появляется,но там отображается <абсолютный
путь где-то на компе>, а если щелкаю по ссылке на файл, то он пытается
открыть путь http://localhost:8000/<абсолютный путь где-то на компе>.
если через админку, то все конечно нормально аплоудится..

с ImageField вообще труба. даже через админку не работает: пишет что
не картинка не прошла валидацию...


Serge Matveenko

не прочитано,
18 мая 2009 г., 03:41:2618.05.2009
– django-...@googlegroups.com
2009/5/18 pazz <pazu...@gmail.com>:
> Расскажите плз вкратце что надо сделать чтоб залить картинку без
> помощи админки.
> не надо посылать меня к документации:  я ее уже посмотрел но у меня не
> работает...

1. Снаружи используйте формы, будет меньше геморроя

2. Можно так:

from django.core.files import File

file = File(NamedTemporaryFile())
file.write(contents)

model_instance.file_field.save(filename, file, save=False)

model_instance.save()


--
Serge Matveenko
moikrug:http://slki.ru/1
linkedin:http://slki.ru/1f
xmpp:se...@matveenko.ru


signature.asc

Dmitry Shevchenko

не прочитано,
18 мая 2009 г., 03:53:1118.05.2009
– django-...@googlegroups.com
Когда документации не хватает надо смотреть в тесты, например
http://code.djangoproject.com/browser/django/trunk/tests/modeltests/files/models.py#L67

правда у меня почему-то физически файл на диск не сохранялся, надо чуть больше покопать.

2009/5/18 pazz <pazu...@gmail.com>



--
Best regards, Dmitry Shevchenko.

Андрей Фефелов

не прочитано,
18 мая 2009 г., 04:45:5218.05.2009
– django-...@googlegroups.com
Как вариант можно использовать STDImage(есть в гкоде). Я его использую для админки. Довольно удобен - но есть несколько багов. Лечится - правкой исходников.

18 мая 2009 г. 13:53 пользователь Dmitry Shevchenko <dmi...@gmail.com> написал:



--
С уважением, Андрей Фефелов

Pazz

не прочитано,
18 мая 2009 г., 14:32:0818.05.2009
– Django russian


On 18 май, 11:41, Serge Matveenko <se...@matveenko.ru> wrote:
> 2009/5/18 pazz <pazuu....@gmail.com>:
>
>     from django.core.files import File
>
>     file = File(NamedTemporaryFile())
>     file.write(contents)
>
>     model_instance.file_field.save(filename, file, save=False)
>
>     model_instance.save()

Вроде сработало! Спасибо.
Осталась одна проблема: когда я щелкаю по ссылке на файл
http://localhost:8000/media/images/picture.jpg.
вылезает ошибка:
"Page not found: /Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/contrib/admin/media/images/picture.jpg"

В URLs.py я добавил

media_img = os.path.join(
os.path.dirname(__file__), 'media','images'
)

(r'^media/images/(?P<path>.*)$', 'django.views.static.serve',
{ 'document_root': media_img }),

Pazz

не прочитано,
18 мая 2009 г., 16:48:2818.05.2009
– Django russian
Нашел в этой группе такую же проблему и указанное там решение помогло.
Нельзя что бы в SETTINGS.py были одинаковые MEDIA_URL и
ADMIN_MEDIA_PREFIX !
сделал
MEDIA_URL = '/site-media/'
ADMIN_MEDIA_PREFIX = '/media/'

и все заработало!

On 18 май, 22:32, Pazz <pazuu....@gmail.com> wrote:
> On 18 май, 11:41, Serge Matveenko <se...@matveenko.ru> wrote:
>

> Осталась одна проблема: когда я щелкаю  по ссылке на файлhttp://localhost:8000/media/images/picture.jpg.

wiz

не прочитано,
19 мая 2009 г., 02:15:2219.05.2009
– django-...@googlegroups.com
ADMIN_MEDIA_PREFIX = MEDIA_URL + 'admin/'
сильно менее криво чем иметь две разных статики.

2009/5/19 Pazz <pazu...@gmail.com>:

--
GNU/Hippie
... ~]# make love

Yuri Baburov

не прочитано,
19 мая 2009 г., 02:19:5519.05.2009
– django-...@googlegroups.com
о, крайне удобный вариант. а для dev server он нормально работает?

2009/5/19 wiz <aenor...@gmail.com>:

--
Best regards, Yuri V. Baburov, ICQ# 99934676, Skype: yuri.baburov,
MSN: bu...@live.com

wiz

не прочитано,
19 мая 2009 г., 02:21:1719.05.2009
– django-...@googlegroups.com
я обычно делаю симлинк в медиа-руте на адмику и везде работает.

2009/5/19 Yuri Baburov <bur...@gmail.com>:


> о, крайне удобный вариант. а для dev server он нормально работает?
>
> 2009/5/19 wiz <aenor...@gmail.com>:
>> ADMIN_MEDIA_PREFIX = MEDIA_URL + 'admin/'
>> сильно менее криво чем иметь две разных статики.
>>
>> 2009/5/19 Pazz <pazu...@gmail.com>:
>>> Нашел в этой группе такую же проблему и указанное там решение помогло.
>>> Нельзя что бы в SETTINGS.py были одинаковые MEDIA_URL и
>>> ADMIN_MEDIA_PREFIX !
>>> сделал
>>> MEDIA_URL = '/site-media/'
>>> ADMIN_MEDIA_PREFIX = '/media/'
>>>
>>> и все заработало!

Pavel Yurevich

не прочитано,
19 мая 2009 г., 05:25:4019.05.2009
– Django russian
а что за проблема с валидацией картинок для ImageField? как решить?

Dmitry Shevchenko

не прочитано,
19 мая 2009 г., 05:29:2619.05.2009
– django-...@googlegroups.com
а что за картинка?

2009/5/19 Pavel Yurevich <pazu...@gmail.com>

а что за проблема с валидацией картинок для ImageField? как решить?

pazz

не прочитано,
20 мая 2009 г., 06:20:5220.05.2009
– Django russian
да обычная картинка) жпг... гифы тоже пробовал.

On 19 май, 13:29, Dmitry Shevchenko <dmi...@gmail.com> wrote:
> а что за картинка?
>

> 2009/5/19 Pavel Yurevich <pazuu....@gmail.com>

pazz

не прочитано,
20 мая 2009 г., 06:23:4620.05.2009
– Django russian
Ответить всем
Отправить сообщение автору
Переслать
0 новых сообщений