【问题标题】:How can I handle POST request and print output on the same page?如何在同一页面上处理 POST 请求和打印输出?
【发布时间】: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 服务器发送异步请求,对其进行处理,然后将结果返回到您现有的页面。

标签: python django


【解决方案1】:

您应该在 POST 请求之后在您的视图中包含 redirect 以防止这种情况发生。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-03
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多