如何从Ajax()获取值到Django模板?

时间:2014-05-23 22:06:34

标签: jquery python ajax django

我有一个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)

在template / 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上?

1 个答案:

答案 0 :(得分:5)

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

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

所以你的客户端代码需要

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

你的django应用需要

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

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