Django数据表加载ajax数据加载

2024-04-25 09:57:29 发布

您现在位置:Python中文网/ 问答频道 /正文

可能我还不明白urls.py是如何工作的…但是我不知道如何用数据表的“bServerSide”加载数据。。。我想我的url.py有问题。我使用Django,datatables.js,这是我的代码:

main.html网站

<table cellpadding="0" cellspacing="0" border="0" id="example1">
    <thead>
        <tr><th>Name</th></tr>
    </thead>
    <tbody></tbody>
</table>

<script type="text/javascript" language="javascript" class="init">
     $(document).ready(function() {
         $('#example1').dataTable( {                 
             "bServerSide": true,
             "sAjaxSource": "main.html/getdata_json",
             "bProcessing": true,
         } );
     } );
 </script>

视图.py

def myajaxview(request):
   report = []
   start = request.GET['iDisplayStart']
   length = request.GET['iDisplayLength']    
   query = name.objects.all() #or any kind of queryset       
   query = query[start:start+length]
   for q in query:
      report.append(json.dumps(q.nome_struttura))    
   json = json.dumps(report)
   return HttpResponse(json, content_type='application/json')

网址.py

  urlpatterns = i18n_patterns('',
      ...
      url(r'^getdata_json$', 'views.myajaxview'),
      ... 

我不知道错误在哪里。你能帮帮我吗?


Tags: pyreportjsonurlmainrequesthtmltable
1条回答
网友
1楼 · 发布于 2024-04-25 09:57:29

您应该尽量避免在多个地方编写url(遵循DRY原则),您可以给出一个name to your url,如下所示:

url(r'^getdata_json$', 'views.myajaxview', name='getdata_json')

然后在HTML中使用Django内置模板标记url检索视图url:

<table cellpadding="0" cellspacing="0" border="0" id="example1"
    data-url="{% url 'getdata_json' %}">

然后在JS中,可以使用jQuerydata方法来检索URL(而不是对其进行硬编码):

<script type="text/javascript" language="javascript" class="init">
 $(document).ready(function() {
     $('#example1').dataTable( {                 
         "bServerSide": true,
         "sAjaxSource": $(this).data('url'),
         "bProcessing": true,
     } );
 } );
 </script>

另外,您可以将q.nome_struttura附加到报表数组中,在最终数组上使用json.dumps,如下所示:

for q in query:
    report.append(q.nome_struttura)
json = json.dumps(report)

一般来说,当您使用AJAX请求时,应该使用浏览器开发工具(如Firefox的Firebug或Chrome开发工具)来确切地查看哪些数据被传递到服务器以及响应如何进行。

对于您的信息,这里有一个third party Django app完全适合您的用例:它将Django与jQuery数据表集成到服务器端处理中。

相关问题 更多 >