如何处理POST请求并在同一页面上打印输出?

时间:2019-05-06 15:41:34

标签: python django web

我为一个包含按钮的页面提供服务,然后单击按钮,Django执行脚本(Ansible剧本)并将stdout打印到同一页面。对于Ansible来说,这是一种非常简单的Web界面。 Ansible与Django位于同一台计算机上。

现在,Django视图在HTTP GET上呈现此页面(HTML模板),并且当单击按钮时,将调用HTTP POST,该POST处理所有Ansible内容,获取stdout并使用其他上下文呈现同一模板。

我目前唯一的问题是单击该按钮后手动刷新。如果您按下按钮,然后刷新浏览器,则会再次调用POST,包括所有后果(Ansible剧本等)

我必须解决什么问题?我真的需要在同一页面上打印stdout,因此无法重定向到其他页面。

外观与此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 个答案:

答案 0 :(得分:1)

在POST请求之后,您应该在视图中加入redirect,以防止这种情况发生。