Я обслуживаю страницу, на которой есть кнопка, и по нажатию кнопки Django выполняет сценарий (Ansible playbook) и печатает стандартный вывод на той же странице. Это своего рода очень упрощенный веб-интерфейс для Ansible. Ansible находится на той же машине, где находится Django.
Прямо сейчас представление Django отображает эту страницу (шаблон HTML) по HTTP GET, и при нажатии кнопки вызывается HTTP POST, который выполняет все вещи Ansible, захватывает стандартный вывод и отображает тот же шаблон с дополнительным контекстом.
Единственная проблема, с которой я столкнулся на данный момент, - это обновление вручную после нажатия этой кнопки. Если вы нажмете кнопку и после этого обновите свой браузер, снова будет вызван POST, включая все последствия (Ansible playbook и т. Д.)
Какие варианты у меня есть, чтобы решить эту проблему? Мне действительно нужно, чтобы стандартный вывод печатался на той же странице, поэтому перенаправление на другую страницу не вариант.
Очень похоже на это https://en.wikipedia.org/wiki/Post/Redirect/Get
<form action="" method="POST">
{% csrf_token %}
{{ form }}
<input type="submit" value="{% if status == 1 %}Shut Down{% else %}Bring Up{% endif %}" id="submit01"/>