FileField

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

idev

не прочитано,
1 апр. 2008 г., 22:55:3501.04.2008
– Django russian
Добрый день.

Объясните пожалуйста как правильно использовать поле: FileField?

В настройках прописал:

MEDIA_ROOT='/home/user/project/uploads/'
MEDIA_URL='http://localhost/'

В моделе указал:

docs=models.FileField('upload_to=docs/%Y/%m/%d')

Когда делаю аплоад через админку все хорошо, но когда кликаю на линк в
тойже админке, то сервер, не может найти файл.

И как правильно проверять валидность загружаемых файлов:

Note that whenever you deal with uploaded files, you should pay close
attention to where you're uploading them and what type of files they
are, to avoid security holes. Validate all uploaded files so that
you're sure the files are what you think they are. For example, if you
blindly let somebody upload files, without validation, to a directory
that's within your Web server's document root, then somebody could
upload a CGI or PHP script and execute that script by visiting its URL
on your site. Don't allow that.

Всем ответившим, заранее спасибо.

Igor Kramer

не прочитано,
1 апр. 2008 г., 23:48:0101.04.2008
– django-...@googlegroups.com
Во-первых, upload_to='docs/%Y/%m/%d'
Во-вторых, как мне кажется, MEDIA_URL лучше сделать в виде относительного пути от корня: MEDIA_URL='/media/'
Тогда загруженные файлы будут лежать в http://localhost/media/docs/...

2008/4/2 idev <vadim.pe...@gmail.com>:

idev

не прочитано,
4 апр. 2008 г., 01:08:5504.04.2008
– Django russian
Честно говоря не совсем понятно как это должно работать.

MEDIA_ROOT='/media/'
MEDIA_URL='/media/'

Из админки все кладется куда надо, но когда из тойже админки я пытаюсь
получить докумет, то получаю page not found:

Using the URLconf defined in lab.urls, Django tried these URL
patterns, in this order:
^admin/
The current URL, media/docs/2008/04/04/Test.pdf, didn't match any of
these.

У меня пока нет ни одного public view. На данном этапе нужно срочно
показать сотрудникам насколько легко использовать Django вместо того
чтобы все писать с нуля.


On Apr 1, 11:48 pm, "Igor Kramer" <igor.kra...@gmail.com> wrote:
> Во-первых, upload_to='docs/%Y/%m/%d'
> Во-вторых, как мне кажется, MEDIA_URL лучше сделать в виде относительного
> пути от корня: MEDIA_URL='/media/'Тогда загруженные файлы будут лежать вhttp://localhost/media/docs/...
>
> 2008/4/2 idev <vadim.pestovni...@gmail.com>:

Igor Kramer

не прочитано,
4 апр. 2008 г., 01:27:5604.04.2008
– django-...@googlegroups.com
А что ты хочешь увидеть-то? Сам файл или что?

2008/4/4 idev <vadim.pe...@gmail.com>:

Alexander Pugachev

не прочитано,
4 апр. 2008 г., 01:40:0204.04.2008
– django-...@googlegroups.com
Вадим, а у вас веб-сервер кроме джанговского есть? Просто Джанга сама
по себе не отдаёт статику. Чтобы получить обратно в броузер
загруженные на сервер файлы, надо либо настроить веб-сервер, если с
одним из них у вас Джанга работает в связке, либо включить и
настроить приложение Джанги, которое отдаёт статические файлы.
В первом случае вы знаете что делать, а во втором вам - сюда:
http://www.djangoproject.com/documentation/static_files/ .

И ещё. В комментариях в settings.py указано, что MEDIA_ROOT -
абсолютный путь, MEDIA_URL - полный УРЛ, с указанием протокола. Лучше
этого и придерживаться. Если нужна какая-то гибкость, относительные
пути и т.п., то можно внутри settings.py вычислить абсолютные
пути/УРЛы по относительным, но в переменных по итогу должны быть
абсолютные значения.

04.04.08, idev<vadim.pe...@gmail.com> написал(а):

Serge Matveenko

не прочитано,
4 апр. 2008 г., 03:04:3104.04.2008
– django-...@googlegroups.com
2008/4/4 Alexander Pugachev <alexander...@gmail.com>:

> И ещё. В комментариях в settings.py указано, что MEDIA_ROOT -
> абсолютный путь, MEDIA_URL - полный УРЛ, с указанием протокола. Лучше
> этого и придерживаться. Если нужна какая-то гибкость, относительные
> пути и т.п., то можно внутри settings.py вычислить абсолютные
> пути/УРЛы по относительным, но в переменных по итогу должны быть
> абсолютные значения.

если работа со статическими файлами идет в режиме "всё на одном
домене", то браузерам клиентов будет проще, если им давать путь от "/"
в урлах, т.е. без протоколов и доменных имен.


--
Serge Matveenko
+7 905 22 44 386
+7 961 268 66 99
http://serge.matveenko.ru/

idev

не прочитано,
4 апр. 2008 г., 08:32:5404.04.2008
– Django russian
У меня запущен девелоперский сервер ./manage.py runserver 8080
Я по началу думал, что у меня не работатет так как обращения идут не к
public website, а к admin website
Спасибо всем за советы, постараюсь поднять один из серверов, которые
описаны в докуметации.


On Apr 4, 3:04 am, "Serge Matveenko" <se...@matveenko.ru> wrote:
> 2008/4/4 Alexander Pugachev <alexander.pugac...@gmail.com>:

idev

не прочитано,
4 апр. 2008 г., 09:37:0304.04.2008
– Django russian
Через админку можно hудо бедно видеть файлы с иx описанием и делать
простой поиск.
Но когда я кликаю чтобы отредактировать файл или его иписание там есть
линк на файл и когда я по ниму клилкаю то получаю ошибку:

page not found:

Using the URLconf defined in lab.urls, Django tried these URL
patterns, in this order:
^admin/
The current URL, media/docs/2008/04/04/Test.pdf, didn't match any of
these.

Потом я сделаю generic view и народ сможет нормально работать.


On Apr 4, 1:27 am, "Igor Kramer" <igor.kra...@gmail.com> wrote:
> А что ты хочешь увидеть-то? Сам файл или что?
>
> 2008/4/4 idev <vadim.pestovni...@gmail.com>:

Alexander Pugachev

не прочитано,
4 апр. 2008 г., 10:48:1504.04.2008
– django-...@googlegroups.com
Ты используешь django.views.static.serve или внешний веб-сервер?
Если serve, то надо в урлконф прописать то, что нужно в него прописать.

04.04.08, idev<vadim.pe...@gmail.com> написал(а):

idev

не прочитано,
6 апр. 2008 г., 22:12:2506.04.2008
– Django russian
Прописал настройки как описано в http://www.djangoproject.com/documentation/static_files/:

urls.py:

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

settings.py:

MEDIA_ROOT = 'd:/media/'
MEDIA_URL = 'http://localhost:8080/media/'
ADMIN_MEDIA_PREFIX = '/media/'

Захожу в админку кладу файл на сервер, все кладется куда надо и как
надо, потом иду обратно в адмику, в тот документ, который только что
положил на сервер. Там есть линк на него. Когда наводишь мышку на линк
файла, браузер показывает: http://localhost:8080/media/docs/2008/04/06/djangobook.pdf

Кликаю и нифига не работает:

Page not found: D:\django-trunk\django/contrib/admin/media\docs/
2008/04/06/djangobook.pdf


On Apr 4, 10:48 am, "Alexander Pugachev"
<alexander.pugac...@gmail.com> wrote:
> Ты используешь django.views.static.serve или внешний веб-сервер?
> Если serve, то надо в урлконф прописать то, что нужно в него прописать.
>
> 04.04.08, idev<vadim.pestovni...@gmail.com> написал(а):

Alexander Pugachev

не прочитано,
7 апр. 2008 г., 02:38:4407.04.2008
– django-...@googlegroups.com
Ага. Надо использовать разные пути для своей статики, и для статики
админки, они не должны перекрываться.
Я оставляю ADMIN_MEDIA_PREFIX = '/media/', а медиа-настройки делаю:
MEDIA_ROOT = 'd:/static/'
MEDIA_URL = 'http://localhost:8080/static/'

urls.py:

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

07.04.08, idev<vadim.pe...@gmail.com> написал(а):

Ответить всем
Отправить сообщение автору
Переслать
0 новых сообщений