首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django数据表加载ajax数据加载

Django数据表加载ajax数据加载
EN

Stack Overflow用户
提问于 2014-09-22 21:15:35
回答 1查看 9.7K关注 0票数 4

可能我还不理解urls.py works...but我不知道如何用数据表的"bServerSide“来加载数据……我想我的urls.py出了点问题。我使用Django,datatables.js,这是我的代码:

main.html

代码语言:javascript
复制
<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>

views.py

代码语言:javascript
复制
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')

urls.py

代码语言:javascript
复制
  urlpatterns = i18n_patterns('',
      ...
      url(r'^getdata_json$', 'views.myajaxview'),
      ... 

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-22 21:42:19

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

代码语言:javascript
复制
url(r'^getdata_json$', 'views.myajaxview', name='getdata_json')

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

代码语言:javascript
复制
<table cellpadding="0" cellspacing="0" border="0" id="example1"
    data-url="{% url 'getdata_json' %}">

然后,在JS中,您可以使用jQuery data方法来检索网址(而不是硬编码):

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

顺便说一下,您可以在最后一个数组上使用json.dumps,将q.nome_struttura附加到报表数组中,如下所示:

代码语言:javascript
复制
for q in query:
    report.append(q.nome_struttura)
json = json.dumps(report)

通常,当您使用AJAX请求时,您应该使用浏览器开发人员工具(如Firefox或Chrome开发人员工具的Firebug )来查看传递给服务器的确切数据以及响应的方式。

对于您的信息,有一个专门针对您的用例的third party Django app:即通过服务器端处理将Django与jQuery Datatables集成。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25975086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档