Как передать произвольный объект Python (например, InMemoryUploadFile) в другое представление Django

Этот вопрос, вероятно, выдаст мою неопытность в веб-разработке, поэтому, пожалуйста, дайте мне знать, если я решаю совершенно неправильную проблему.

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

В Django я определил три представления/шаблона:

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

Проблема в том, что файл загружается в представлении/шаблоне Upload; но я хочу определить совокупную статистику только на странице Check и сохранить файл после того, как пользователь подтвердит свою совокупную статистику в представлении/шаблоне Check. Я не уверен, как я могу передать файл (который будет объектом InMemoryUploadFile) из представления Upload в представление Check.

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

Я вижу, что ваша проблема может быть решена двумя способами:

a) InMemoryUploadFile будет удален после того, как ваш view (function) вернет что-то

  1. пользователь отправляет файл на view_reciever, где этот файл будет обработан вашей бизнес-логикой, сохранен на cloud и возвращен пользователю в качестве статистики для подтверждения, хорош он или нет
  2. .
  3. если файл хороший, то он уже сохранен на вашем облаке
  4. если он плохой - удалите его

b) используя Ajax запрос

  1. пользователь может отправить файл на view, который будет обрабатывать только ваш файл и return statistics через ajax request
  2. .
  3. если это хорошо для пользователя, он может отправить новый ajax request с этим файлом, и он сохранит файл в облаке
  4. .
  5. если это плохо, do nothing (but userfriendly) (он все равно не хранится в вашем облаке)
Вернуться на верх