Есть ли в django способ получить доступ к загруженным файлам при нескольких запросах?
Я создаю приложение, в котором пользователи могут загружать свои файлы и переходить на страницу оплаты. После завершения оплаты я хочу сохранить файлы, загруженные пользователем, в базе данных. Если пользователь не завершает оплату, то я не хочу сохранять файлы на сервере или в базе данных.
Есть ли способ сделать это?
Две вещи нужно распаковать здесь. Во-первых, не рекомендуется хранить файлы в базе данных. Лучше использовать хранилище или непосредственно файловую систему сервера.
Во-вторых, файлы обычно загружаются и сохраняются в соответствии с вашей стратегией (в файловой системе сервера, базе данных или стороннем хранилище), а затем происходит очистка, если пользователь не произвел оплату. Вам нужно определить условия, при которых произойдет очистка, будь то загрузка файла пользователем и его неактивность в течение определенного периода времени, или нажатие на определенную кнопку, или комбинация того и другого.
Чтобы запустить очистку, у вас есть разные возможности:
- При загрузке файлов запланируйте задание, например, с помощью django-q, чтобы проверить, что, скажем, через 1 час после загрузки файлов, если оплата не была завершена, файлы будут удалены .
- Напишите команду django, которая запускается заданием cron каждый день и удаляет файлы пользователя, чей платеж не был завершен более 1 часа .
- Вы также можете работать с django-sessions и регулярно сканировать сессии, которые не были активны в течение 1 часа, чей платеж ожидается, и предполагать, что эти пользователи не будут продолжать платеж, и удалять их загруженные файлы .