django与jquery数据表的集成。
django-datatables-too的Python项目详细描述
作者:tim santor tsantor@xstudios.agency
概述
处理数据表1.10.x的服务器端处理。
得到它
要安装django数据表,只需使用pip:
$ pip install django-datatables-too
要安装开发版本:
$ pip install git+https://bitbucket.org/tsantor/django-datatables-too.git
如果您想从源代码安装它,请获取git存储库并运行 setup.py:
$ git clone https://bitbucket.org/tsantor/django-datatables-too.git $ cd django-datatables-too $ pip install .
用法
视图.py
from django.http import JsonResponse from django.views.generic import View from django_datatables_too.mixins import DataTableMixin class DataTablesAjaxPagination(DataTableMixin, View): model = Report queryset = Report.objects.all() def _get_actions(self, obj): """Get action buttons w/links.""" return f'<a href="{obj.get_update_url()}" title="Edit" class="btn btn-primary btn-xs"><i class="fa fa-pencil"></i></a> <a data-title="{obj}" title="Delete" href="{obj.get_delete_url()}" class="btn btn-danger btn-xs btn-delete"><i class="fa fa-trash"></i></a>' def filter_queryset(self, qs): """Return the list of items for this view.""" # If a search term, filter the query if self.search: return qs.filter( Q(number__icontains=self.search) | Q(title__icontains=self.search) | Q(state__icontains=self.search) | Q(year__icontains=self.search) ) return qs def prepare_results(self, qs): # Create row data for datatables data = [] for o in qs: data.append({ 'number': o.number, 'title': Truncator(o.title).words(10), 'state': o.state, 'year': o.year, 'published': o.published, 'modified': o.modified, 'actions': self._get_actions(o) }) return data def get(self, request, *args, **kwargs): context_data = self.get_context_data(request) return JsonResponse(context_data)
url.py
from django.urls import path from . import views app_name = 'reports' urlpatterns = [ ... path('ajax', views.DataTablesAjaxPagination.as_view(), name='report-list-ajax'), ]
report_list.html
$('#report-table').DataTable({ columnDefs: [{ orderable: false, targets: -1 }, ], // Ajax for pagination processing: true, serverSide: true, ajax: { url: '{% url "reports:report-list-ajax" %}', type: 'get', }, columns: [ { data: 'number', name: 'number'}, { data: 'title', name: 'title' }, { data: 'state', name: 'state' }, { data: 'year', name: 'year' }, { data: 'published', name: 'published' }, { data: 'modified', name: 'modified' }, { data: 'actions', name: 'actions' } ] });
0.1.0 2018年9月25日
- 初始版本
0.1.1 2019-08-16
- 修复了datatable设置为ordering: false时的错误 javascript