【发布时间】:2019-05-06 15:41:34
【问题描述】:
我提供一个页面,该页面有一个按钮,点击一个按钮,Django 执行脚本(Ansible playbook)并将标准输出打印到同一页面。对于 Ansible 来说,这是一种非常简单的 Web 界面。 Ansible 与 Django 位于同一台机器上。
现在 Django 视图在 HTTP GET 上呈现此页面(HTML 模板),当单击按钮时,会调用 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"/>
【问题讨论】:
-
听起来您需要 AJAX 向您的 django 服务器发送异步请求,对其进行处理,然后将结果返回到您现有的页面。