【问题标题】:How to get information via POST request without reloading entire webpage. (Python/Django)如何在不重新加载整个网页的情况下通过 POST 请求获取信息。 (Python/Django)
【发布时间】:2013-02-25 05:15:47
【问题描述】:

情况很简单,我们想向 Django(我们的 Web 框架)发送信息,让它对信息执行功能,并从 Django 接收信息。

刚才我们POST到服务器的表单是这样的。

<form method="post" onAction="/write" name="form1">
    {% csrf_token %}
    <button type="submit">Send Info for processing</button>
</form>

我们希望这个过程发送变量或传输信息。

这成功地到达了我们的views.py 并到达了可以处理信息的函数。

但目前我们不知道如何从 POST 中获取信息,也不知道如何在不加载全新页面的情况下将其发回。

【问题讨论】:

    标签: python html django http web-applications


    【解决方案1】:

    由于您不想在发布请求时刷新页面,因此您需要向服务器发出异步请求。 JQuery, Javascript 库有一些简洁的函数可以帮助你发出异步请求。服务器收到请求后,可以执行计算,可以发送一个带有 HTML、XML 或 JSON 数据的 HttpResponse,正如 Brandon 提到的那样

    这是使用 Django 进行 Ajax 教程的 wiki 页面

    https://code.djangoproject.com/wiki/AJAX

    【讨论】:

    • 但是HttpResponse内容不会只是覆盖浏览器解析为页面源代码的内容吗?
    • 不,不会。因为,您将在您的 javascript 函数中收到响应
    • 刚刚向 JS 添加了用于处理响应的代码并发送了return HttpResponse("hey"),但它完成了我在之前的评论中担心的事情,它只是显示了一个带有源代码“嘿”的页面,没有别的。
    • 看起来您没有发出 AJAX 请求或响应不合适。请张贴代码。
    【解决方案2】:

    您需要返回一个 HttpResponse。是否返回 XML、JSON、HTML 等取决于您。您的请求必须通过 Ajax 进行。

    https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.HttpResponse

    【讨论】:

    • 在对另一个答案的类似回复中,HttpResponse 内容不会只是覆盖浏览器解析为页面源代码的内容吗?
    • 没有。响应由 JavaScript 接收。您可以根据需要处理响应并更新 DOM。
    • 刚刚向 JS 添加了用于处理响应的代码并发送了return HttpResponse("hey"),但它完成了我在之前的评论中担心的事情,它只是显示了一个带有源代码“嘿”的页面,没有别的。
    • 不幸的是,我马上就要离开了,但请参阅我的 Ajax Base Form sn-ps 了解如何返回和处理 Ajax 响应:djangosnippets.org/snippets/2393
    猜你喜欢
    • 2011-11-02
    • 2021-09-13
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多