Запрос страницы подтверждения для формы с полем FileInput в Django - PullRequest
0 голосов
/ 08 января 2011

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

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

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

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

Как лучше всего решить эту проблему?

Спасибо!

Ответы [ 2 ]

1 голос
/ 08 января 2011

Сохранить расположение пути к файлу в сеансе .Вы можете получить доступ к сеансу из своего представления:

def your_view(request):
    ...
    request.session['file_path'] = 'the file path'

Затем в другом представлении вытащите его:

def your_other_view(request):
    ...
    request.session.get('file_path')

и передайте его для использования в шаблон.Вам не нужно беспокоиться о безопасности (из документов Django ):

Он хранит данные на стороне сервера и абстрагирует отправку и получение файлов cookie.Файлы cookie содержат идентификатор сеанса, а не сами данные.

1 голос
/ 08 января 2011

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

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

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