Мастер форм Django: удаление временных файлов, сохраненных промежуточными шагами

Я использую django (1.4) formwizard для своего приложения. На шаге 1 я загружаю 2 файла. Эти файлы используются на втором этапе. Все работает нормально, но это ---> «Когда я завершаю все шаги ИЛИ останавливаюсь после шага 1, у меня все еще есть временные файлы, хранящиеся в каталоге MEDIA»

Как я могу гарантировать, что эти файлы будут удалены в любом из случаев?


person Aryaveer    schedule 26.07.2013    source источник


Ответы (2)


Django говорит в документации, что вы должны управлять этими файлами самостоятельно, поэтому:

Вы можете установить путь загрузки в /tmp (если вы используете Linux), чтобы они автоматически удалялись.

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

person Nikign    schedule 27.07.2013
comment
Вы правы, но учтите, что пользователь загружает файлы на шаге 1, а затем нажимает кнопку «Предыдущий» и загружает другой файл. В этом случае у нас есть старые и новые файлы. В другом случае, если я периодически запускаю какой-либо скрипт, я могу удалить некоторые файлы, которые пользователь только что загрузил на шаге 1, и он собирается отправить шаг 2. - person Aryaveer; 27.07.2013

Вам нужно сделать 2 шага решения.

Первый шаг - установить в представлении мастера переменную file_storage с параметрами для идентификации выполнения мастера, чтобы избежать ошибок на предыдущих шагах, которые вы указали в последнем комментарии.

А затем в функции done() мастера удалите все содержимое папки (не забудьте использовать уникальную схему для каждого мастера при выполнении), чтобы вы могли удалить все файлы при отправке до завершения работы мастера.

person NeoMorfeo    schedule 27.08.2014