поле загрузки неверной формы указывает в никуда - PullRequest
0 голосов
/ 13 октября 2009

Это может быть вопрос с очень простым ответом, однако я не смог найти ни одного в интернете.

Я пишу приложение Django. У меня есть форма с ненужным ImageField. После того как пользователь отправил форму (с изображением), если форма недействительна, на стороне сервера я заполняю форму данными и файлами запроса (например, form = FooForm(request.DATA, request.FILES, instance = foo) и отправляю ответ клиенту.

На клиенте другие поля отображаются ОК, но поле изображения нигде не указывает. Поскольку поле изображения не является обязательным, пользователь обычно пропускает ситуацию и повторно отправляет форму без изображения.

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

1 Ответ

1 голос
/ 13 октября 2009

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

Очевидно, что это проблема, если вы на самом деле хотите, чтобы файл был загружен пользователем - если форма изначально была недействительной, она не будет сохранена, и второй раз через файл будет утерян, если пользователь не загрузит его снова. Одним из возможных решений может быть помещение файла для загрузки в его собственную форму в качестве второй страницы - после того, как форма была проверена и сохранена, отображается вторая форма, в которой есть только файл. Функция отслеживания ошибок Trac работает следующим образом: в главной форме установлен флажок «У меня есть файл для загрузки» и пользователь переходит на эту форму, если флажок установлен.

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