About
=====
django-datatables-view is a base view for handling server side processing for the awesome datatables 1.9.x, 1.10.x (http://datatables.net).
django-datatables-view simplifies handling of sorting, filtering and creating JSON output, as defined at: http://datatables.net/examples/server_side/
Example
=======
Example project that uses django-datatables-view is available at: https://bitbucket.org/pigletto/django-datatables-view-example/
Usage
=====
### 1. Install django-datatables-view ###
pip install django-datatables-view
### 2. Edit views.py ###
_django_datatables_view_ uses **GenericViews**, so your view should just inherit from base class: **BaseDatatableView**, and override few things
(there is also a DatatableMixin - pure datatables handler that can be used with the mixins of your choice, eg. django-braces)
These are:
* **model** - the model that should be used to populate the datatable
* **columns** - the columns that are going to be displayed
* **order_columns** - list of column names used for sorting (eg. if user sorts by second column then second column name from this list will be used with order by clause).
* **filter_queryset** - if you want to filter your datatable then override this method
For more advanced customisation you might want to override:
* **get_initial_queryset** - method that should return queryset used to populate datatable
* **prepare_results** - this method should return list of lists (rows with columns) as needed by datatables
The code is rather simple so do not hesitate to have a look at it. Method that is executed first (and that calls other methods) is **get_context_data**
See example below:
:::python
from django_datatables_view.base_datatable_view import BaseDatatableView
class OrderListJson(BaseDatatableView):
# The model we're going to show
model = MyModel
# define the columns that will be returned
columns = ['number', 'user', 'state', 'created', 'modified']
# 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 = ['number', 'user', 'state', '', '']
# 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):
# We want to render user as a custom column
if column == 'user':
return '{0} {1}'.format(row.customer_firstname, row.customer_lastname)
else:
return super(OrderListJson, self).render_column(row, column)
def filter_queryset(self, qs):
# use parameters passed in POST request to filter queryset
# simple example:
search = self.request.POST.get('search[value]', None)
if search:
qs = qs.filter(name__istartswith=search)
# more advanced example using extra parameters
filter_customer = self.request.POST.get('customer', None)
if filter_customer:
customer_parts = filter_customer.split(' ')
qs_params = None
for part in customer_parts:
q = Q(customer_firstname__istartswith=part)|Q(customer_lastname__istartswith=part)
qs_params = qs_params | q if qs_params else q
qs = qs.filter(qs_params)
return qs
### 3. Edit urls.py ###
Add typical django's urlconf entry:
# ...
url(r'^my/datatable/data/$', login_required(OrderListJson.as_view()), name='order_list_json'),
# ....
### 4. Define HTML + JavaScript ###
Example JS:
$(document).ready(function() {
var oTable = $('.datatable').dataTable({
// ...
"processing": true,
"serverSide": true,
"ajax": "{% url 'order_list_json' %}"
});
// ...
});
## Another example of views.py customisation ##
from django_datatables_view.base_datatable_view import BaseDatatableView
class OrderListJson(BaseDatatableView):
order_columns = ['number', 'user', 'state']
def get_initial_queryset(self):
# return queryset used as base for futher sorting/filtering
# these are simply objects displayed in datatable
# You should not filter data returned here by any filter values entered by user. This is because
# we need some base queryset to count total number of records.
return MyModel.objects.filter(something=self.kwargs['something'])
def filter_queryset(self, qs):
# use request parameters to filter queryset
# simple example:
search = self.request.POST.get('search[value]', None)
if search:
qs = qs.filter(name__istartswith=search)
# more advanced example
filter_customer = self.request.POST.get('customer', None)
if filter_customer:
customer_parts = filter_customer.split(' ')
qs_params = None
for part in customer_parts:
q = Q(customer_firstname__istartswith=part)|Q(customer_lastname__istartswith=part)
qs_params = qs_params | q if qs_params else q
qs = qs.filter(qs_params)
return qs
def prepare_results(self, qs):
# prepare list with output column data
# queryset is already paginated here
json_data = []
for item in qs:
json_data.append([
item.number,
"{0} {1}".format(item.customer_firstname, item.customer_lastname),
item.get_state_display(),
item.created.strftime("%Y-%m-%d %H:%M:%S"),
item.modified.strftime("%Y-%m-%d %H:%M:%S")
])
return json_data
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
共16个文件
py:4个
txt:4个
pkg-info:2个
资源分类:Python库 所属语言:Python 资源全名:django-datatables-view-1.12.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源推荐
资源详情
资源评论
收起资源包目录
django-datatables-view-1.12.tar.gz (16个子文件)
django-datatables-view-1.12
MANIFEST.in 51B
PKG-INFO 8KB
django_datatables_view.egg-info
PKG-INFO 8KB
requires.txt 10B
not-zip-safe 1B
SOURCES.txt 434B
top_level.txt 23B
dependency_links.txt 1B
django_datatables_view
base_datatable_view.py 9KB
mixins.py 3KB
__init__.py 0B
LICENSE 1KB
CHANGES 1KB
setup.cfg 59B
setup.py 975B
README.md 6KB
共 16 条
- 1
资源评论
挣扎的蓝藻
- 粉丝: 12w+
- 资源: 15万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- foldcraftlauncher_262944.apk
- 珍藏多年的基于matlab实现潮流计算程序源代码集合,包含多个潮流计算程序.rar
- 使用FPGA实现串-并型乘法器
- 基于matlab实现针对基于双曲线定位的DV-Hop算法中误差误差出一种基于加权双曲线定位的DV-Hop改进算法.rar
- 基于matlab实现由遗传算法开发的整数规划,车辆调度问题.rar
- 电视家7.0(对电视配置要求高).apk
- 免费计算机毕业设计-基于JavaEE的医院病历管理系统设计与实现(包含论文+源码)
- 手机端 我的世界融合植物大战僵尸版.apk
- 植物大战僵尸 · 戴夫的老年生活 手机版.apk
- Runcraft · 我的世界跑酷游戏 手机端.apk
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功