【问题标题】:How to get values from the Ajax() into Django template?如何从 Ajax() 获取值到 Django 模板中?
【发布时间】:2014-07-13 09:19:40
【问题描述】:

我有一个 Django 模板,它显示从数据库接收的多个值并将其传递给模板,如下所示:

在views.py中

def test1(requests):
  requests.get...
  requests.get...
  requests.get...
  someQuery = "select id from table;"
  executeQ(someQuery)
  someQuery = "select id from table;"
  executeQ(someQuery)
  someQuery = "select id from table;"
  executeQ(someQuery)
  context = Data1, Data2, Data3
  return render_to_response('test1/index.html', context)

在模板/test1/index.html中

<html>
  ...... 

<table>
<th> header1 </th>
<th> header2 </th>
<th> header3 </th>

{% for row in context %}
 <td> row.1 </td>   
 <td> row.2 </td>
 <td> row.3 </td>
{% endfor %}

现在,我想要的是通过 Ajax 更新这些 row.1、row.2、row.3,而无需每次都重新加载页面。数据来自数据库。那么我可以在哪里以及如何放入一些 Ajax() 以便在 Django 中发生这种情况?

【问题讨论】:

    标签: jquery python ajax django


    【解决方案1】:

    除了服务器端代码 (Python) 之外,您还需要添加一些客户端代码 (JavaScript)。

    一种常见的方法是使用 jQuery ajax() 方法向服务器发送 ajax 请求,使用您的 django 应用程序处理此请求,将响应发送回客户端,然后操作 DOM。

    所以你的客户端代码需要

    • 向服务器发送XMLHttpRequest(通常使用$.ajax()
    • 修改 DOM,如果 请求成功(通常在 $.ajax() 成功回调中 函数)
    • 您可以通过迭代 JSON 响应中的数据来创建表格行所需的标记,然后使用 JavaScript/jQuery 用这个新标记替换前一行(如图所示 here

    而您的 django 应用程序需要

    我还建议您阅读this excellent answer 关于使用 django 和 ajax(包括 jQuery $.ajax() 方法的示例)。

    还值得一提的是,您不必在 ajax 步骤中使用 jQuery - you can generate Ajax requests with pure JavaScript - 但它是一种流行的方法并且非常用户友好。

    【讨论】:

    • 感谢@dannymilsom 提供了很好的解释和很好的例子。我有几个问题: 1. Ajax() 多久发送一次请求以获取更新的数据,如果需要我们如何更改它。 2. 获取数据后,如何在 Django {{variable}} 中使用 javascript 变量?
    • 1.) 您可以 window.setInterval() 在适合您要求的时间段使用 $.ajax() 重复发送异步请求 2.) 一旦页面呈现您的 django 模板变量将是源代码中的 HTML - 因此您必须在 JavaScript 中使用适当的选择器来唯一标识您要修改的元素。
    • 没问题 - 如果这对您有帮助,请随意投票或将其标记为 anwser,这样问题就结束了。
    猜你喜欢
    • 2018-09-23
    • 2018-09-28
    • 2011-11-11
    • 2011-02-10
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    相关资源
    最近更新 更多