Files
contracts/History/sessions/session-04-prg-fix.md
T

22 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Исправление PRG-паттерна и окна повторной отправки (15.06.2026)
## Проблема
При нажатии F5 (перезагрузка) браузер выдает окно «Подтвердите повторную отправку формы». Это происходит потому, что последним запросом был POST (на загрузку или на обработку), и страница отображается как результат этого POST-запроса.
## Решение: PRG (Post-Redirect-Get)
Все POST-обработчики должны завершаться инструкцией `redirect(...)`.
1. Пользователь отправляет POST.
2. Сервер обрабатывает данные.
3. Сервер возвращает статус 302 (Redirect).
4. Браузер делает автоматический GET на новый URL.
5. Теперь в истории браузера последний запрос — GET. При нажатии F5 просто обновится страница без всяких окон.
## Что сделано:
- В `app.py` проверено, что `_upload_files` делает `redirect("/?id=" + contract_id)`.
- В `app.py` проверено, что `_process` делает `redirect("/?id=" + cid)`.
- Добавлена очистка параметров, если они могут вызвать зацикливание.
## Статус
- [x] Реализован Redirect после всех POST-запросов.
- [x] Окно подтверждения больше не должно появляться при F5 на странице договора.