Как передать произвольный объект Python (например, InMemoryUploadFile) в другое представление Django
Этот вопрос, вероятно, выдаст мою неопытность в веб-разработке, поэтому, пожалуйста, дайте мне знать, если я решаю совершенно неправильную проблему.
Я создаю веб-приложение, в котором пользователям предлагается загрузить файл с данными. После загрузки пользователям показывается совокупная статистика данных, содержащихся в файле, чтобы помочь выявить любые ошибки. Затем пользователь может подтвердить, что это правильные данные. Только после этого файл будет храниться где-то на чужих компьютерах в "облаке"
В Django я определил три представления/шаблона:
- Upload: шаблон содержит форму, позволяющую пользователю выбрать файл для загрузки.
- Проверить: шаблон показывает совокупную статистику и содержит форму с кнопками для возврата назад или подтверждения правильности загруженного файла.
- Подтверждение: страница показывает, что файл был сохранен.
Проблема в том, что файл загружается в представлении/шаблоне Upload; но я хочу определить совокупную статистику только на странице Check и сохранить файл после того, как пользователь подтвердит свою совокупную статистику в представлении/шаблоне Check. Я не уверен, как я могу передать файл (который будет объектом InMemoryUploadFile
) из представления Upload в представление Check.
Возможно, я пытаюсь решить эту проблему неправильным способом и мне следует найти способ сделать проверку на той же странице, что и форма загрузки.
Я вижу, что ваша проблема может быть решена двумя способами:
a) InMemoryUploadFile
будет удален после того, как ваш view (function)
вернет что-то
- пользователь отправляет файл на
view_reciever
, где этот файл будет обработан вашей бизнес-логикой, сохранен наcloud
и возвращен пользователю в качестве статистики для подтверждения, хорош он или нет .
- если файл хороший, то он уже сохранен на вашем облаке
- если он плохой - удалите его
b) используя Ajax
запрос
- пользователь может отправить файл на
view
, который будет обрабатывать только ваш файл иreturn statistics
черезajax request
.
- если это хорошо для пользователя, он может отправить новый
ajax request
с этим файлом, и он сохранит файл в облаке .
- если это плохо,
do nothing (but userfriendly)
(он все равно не хранится в вашем облаке)