Я собираюсь быть честным: это вопрос, который я задал в списке рассылки Django-Users на прошлой неделе. Поскольку я пока не получил никаких ответов, я публикую его в Stack Overflow в надежде, что он привлечет больше внимания.
Я хочу создать приложение, которое облегчает работу с пользователем,
многократная / массовая загрузка файлов в ваши собственные приложения. С дружественным я
означает загрузить как Gmail, Flickr, ... где пользователь может выбрать несколько
файлы сразу в диалоге просмотра файлов. Затем файлы загружаются
последовательно или параллельно и хороший обзор выбранных файлов
отображается на странице с индикатором выполнения рядом с ними. «Отмена»
Кнопка загрузки также возможна.
Вся эта милость обычно решается с помощью объекта Flash. полный
решения для клиентской стороны, такие как: SWFUpload
http://swfupload.org/, FancyUpload http://digitarald.de/project/fancyupload/
, YUI 2 Uploader http://developer.yahoo.com/yui/uploader/ и, вероятно,
еще много.
Конечно, хитрость заключается в том, чтобы эти решения были интегрированы в ваш
проект. Особенно в таких рамках, как Django, двойной, так что если вы хотите
его можно использовать повторно.
Итак, у меня есть несколько идей, но я не эксперт ни по Джанго, ни по
Flash-решения для загрузки. Я поделюсь своими идеями здесь в надежде
получать отзывы от более знающих и опытных людей.
(Или даже просто некоторые «я тоже этого хочу!» Отвечает :))
Вы заметите, что я делаю несколько предположений:
(начальная) область применения приложения под контролем. Эти предположения
являются, конечно, спорно:
Хорошо, моя идея пока что:
Если вы хотите массово загрузить несколько файлов, у вас будет
модель для хранения каждого файла в. Т.е. модель будет содержать один
FileField или один ImageField.
Модели с множественным (но конечно конечным) количеством FileFields /
ImageFields не нуждается в легкой массовой загрузке imho: если у вас есть
модель с 100 FileFields вы делаете что-то не так :)
Примеры, где вы хотели бы мой предполагаемый вид массовой загрузки:
- Приложение, которое имеет только одну модель "Брошюра" с полем файла,
поле заголовка (динамически создается из имени файла) и дата_добавлено
поле.
- Приложение для создания фотогалереи с моделями «Галерея» и «Фото». Вы выбираете
Галерея для добавления картинок, загрузки картинок и новых объектов Photo
созданы и внешние ключи установлены для выбранной галереи.
Было бы неплохо иметь возможность настроить или расширить приложение для вашего
любимое решение для загрузки Flash. Мы можем выбрать один из трех выше, как
по умолчанию, но реализовать приложение, чтобы люди могли легко добавлять
дополнительные реализации (вроде как Django может использовать несколько
базы данных). Пусть он будет независим от любого конкретного решения на стороне клиента.
Если нам нужно выбрать один для начала, возможно, выберите один с
наименьший след? (минимальная загрузка клиентской части)
Решения на основе Flash асинхронно (и последовательно, или
параллельно) POST файлы на URL. Я предлагаю, чтобы URL был локальным
к нашему общему приложению (так что оно одинаково для каждого приложения, где вы используете наши
приложение в). Этот URL будет отображен в нашем общем приложении.
Вид будет делать следующее: создать новый экземпляр модели, добавить
файл, ДОПОЛНИТЕЛЬНО СДЕЛАТЬ ДОПОЛНИТЕЛЬНЫЙ ПЕРСОНАЛ и сохранить экземпляр.
DO EXTRA STUFF - это код, который приложение, которое использует наше приложение, хочет запустить.
Не нужно предоставлять никакого дополнительного кода, если модель имеет только
FileField / ImageField стандартный код представления сделает эту работу.
Но большинство приложений захотят делать дополнительные вещи, я думаю, например, заполнение
другие поля: title, date_added, Foreignkeys, Manytomany, ...
Я еще не задумывался о механизме для ДОПОЛНИТЕЛЬНОЙ РАБОТЫ. Просто
пришло время обернуть общий вид приложения, но это не разработчик
дружественный, так как вы должны написать свой собственный шаблон URL и вашсобственный взгляд. Затем вы должны указать Flash-решениям использовать новый URL
так далее...
Я думаю, что здесь можно использовать что-то вроде сигналов?
Формы / Администратор: я все еще очень капризен в отношении того, как все это может быть лучше всего
встроенный в Admin или общие формы / виджеты / ...
(и это мое отсутствие опыта Django):
- В случае приложения Галерея / Фото:
Вы можете предоставить виджет массовой загрузки фотографий на детали галереи
форма. Но что, если экземпляр Галереи еще не сохранен? Файл
просмотр загрузки не сможет установить иностранные ключи на фото
экземпляров. Я вижу, что приложение auth, когда вы создаете пользователя, сначала спрашивает
для имени пользователя и пароля и только тогда предоставляет вам больше
Форма для заполнения адресов электронной почты, выбора ролей и т. д. Мы могли бы сделать что-то вроде
что.
- В случае приложения только с одной моделью:
Как вы предоставляете форму в админке Django, чтобы сделать вашу массу
загрузить? Вы не можете сделать это с подробной формой вашей модели, это
только для одного экземпляра модели.
Вероятно, есть еще десятки вопросов, на которые нужно ответить, прежде чем
Я даже могу начать на этом приложении. Поэтому, пожалуйста, скажите мне, что вы думаете! Дать
мне вход! Что Вам нравится? Что нет? Что бы вы сделали по-другому? Является
эта идея солидная? Где это не так?
Спасибо!