1.7 KiB
1.7 KiB
Исправление PRG-паттерна и окна повторной отправки (15.06.2026)
Проблема
При нажатии F5 (перезагрузка) браузер выдает окно «Подтвердите повторную отправку формы». Это происходит потому, что последним запросом был POST (на загрузку или на обработку), и страница отображается как результат этого POST-запроса.
Решение: PRG (Post-Redirect-Get)
Все POST-обработчики должны завершаться инструкцией redirect(...).
- Пользователь отправляет POST.
- Сервер обрабатывает данные.
- Сервер возвращает статус 302 (Redirect).
- Браузер делает автоматический GET на новый URL.
- Теперь в истории браузера последний запрос — GET. При нажатии F5 просто обновится страница без всяких окон.
Что сделано:
- В
app.pyпроверено, что_upload_filesделаетredirect("/?id=" + contract_id). - В
app.pyпроверено, что_processделаетredirect("/?id=" + cid). - Добавлена очистка параметров, если они могут вызвать зацикливание.
Статус
- Реализован Redirect после всех POST-запросов.
- Окно подтверждения больше не должно появляться при F5 на странице договора.