1. 安装

    django-datatables-view

    pip install django-datatables-view

  2. 前端配置-JS部分


    $('#mytable').DataTable({

        "paging": true,

        "lengthChange": true,

        "searching": true,

        "ordering": true,

       "info": true,

        "autoWidth": true,

        "lengthMenu": [[20,50,100, -1], [20,50,100, "All"]],

        "sPaginationType": "full_numbers",

        "bProcessing": true, //开启读取服务器数据时显示正在加载中……特别是大数据量的时候,开启此功能比较好

        "bServerSide": true, //开启服务器模式 

        "sAjaxSource": "{% url 'proxy_list_json' %}", //给服务器发请求的url


      });

  3. django 后台响应部分

    from django_datatables_view.base_datatable_view import BaseDatatableView

    def proxyAdmin(req):

        #rows=Proxy.objects.all()[:100]

        return render_to_response('data/proxyadmin.html')


    class ProxyListJson(BaseDatatableView):

        # The model we're going to show

        model = Proxy #要分页的类


        # define the columns that will be returned

        columns = ['ip', 'description', 'score', 'logdate'] #需要显示的字段


        # define column names that will be used in sorting

        # order is important and should be same as order of columns

        # displayed by datatables. For non sortable columns use empty

        # value like ''

        order_columns = ['ip','description', 'score', 'logdate'] #排序


        # set max limit of records returned, this is used to protect our site if someone tries to attack our site

        # and make it return huge amount of data

        max_display_length = 500


        def render_column(self, row, column):

                return super(ProxyListJson, self).render_column(row, column)


        def filter_queryset(self, qs):

            # use parameters passed in GET request to filter queryset

            qs_params = None

            search = self.request.GET.get(u'sSearch', None)

            if search: #模糊搜索

                q = Q(ip__contains=search)|Q(description__contains=search)

                qs_params = qs_params | q if qs_params else q

            

                qs = qs.filter(qs_params)


            return qs

  4. URLS配置

    url(r'^paging_proxy/$', ProxyListJson.as_view(), name='proxy_list_json'),