Как я могу обработать запрос POST и распечатать вывод на одной странице? - PullRequest
0 голосов
/ 06 мая 2019

Я обслуживаю страницу, на которой есть кнопка, и по нажатию кнопки 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"/>

1 Ответ

1 голос
/ 06 мая 2019

Вы должны включить redirect в ваше представление после запроса POST, чтобы этого не произошло.

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