轻量级Django类,用于完整的Datatables服务器端处理实现
项目描述
# Django Datatables服务器处理
轻量级Django类,用于完整的Datatables服务器端处理实现。
https://datatables.net.cn/examples/data_sources/server_side.html
在寻找Django中Datatables服务器端处理的良好集成后,我对互联网上找到的内容进行了测试,但它们都存在相同的问题,即无法很好地管理外键关系。最终,我自行完成了它。
此代码已在Datatables 1.10.+ 和 Django 1.10.+ 上进行了测试。
要使其工作,只需将datatables放入您的HTML模板中,如下所示
```html
<!-- jQuery -->
<script src="/statics/js/vendors/jquery/dist/jquery.min.js"></script>
<!-- Datatables -->
<script src="/statics/js/vendors/datatables.net/js/jquery.dataTables.js"></script>
<!-- Datatables -->
<script>
$(document).ready(function() {
$('.datatable-responsive-serverside').DataTable({
"aLengthMenu": [
[25, 50, 100, 500, ], // -1],
[25, 50, 100, 500, ] //"All"]
],
"paging": true,
"responsive": true,
"processing": true,
"serverSide": true,
"ajax": "{% url 'appnamespace:viewname_json' %}",
// POST METHOD EXAMPLE HERE
//~ "ajax": {
//~ url: "{% url 'appnamespace:viewname_json' %",
//~ 方法: 'post',
//~ 数据: function(args) {
//~ 返回 {
//~ "args": JSON.stringify(args)
//~ };
//~ }
//~ },
});
});
</script>
```
需求
------------
从[这里](https://datatables.net.cn/download/)下载您首选的 DataTables 版本。
设置和示例
------------------
在您的 Python 环境中安装包。
````
pip install git+https://github.com/peppelinux/django-datatables-ajax.git
````
创建一个视图
````
from django.conf import settings
from django.contrib.auth.decorators import login_required
from django.db.models import Q
from django.http import HttpResponse, Http404
from django.http.response import HttpResponseRedirect
from django.http import JsonResponse
from .datatables import DjangoDatatablesServerProc
@login_required
def datatable_data(request)
radcheck = get_radcheck_active(request)
radius_accounts = _get_radius_accounts(request, radcheck)
model = RadiusPostAuth
columns = ['pk', 'username', 'reply', 'calling_station_id', 'date']
base_query = model.objects.filter(username__in=[i.username for i in radius_accounts]).exclude(calling_station_id='').order_by('-date')
class DTD(DjangoDatatablesServerProc)
def get_queryset(self)
if self.search_key
self.aqs = base_query.filter(
Q(username__icontains=self.search_key) | \
Q(reply__icontains=self.search_key) | \
Q(calling_station_id__icontains=self.search_key))
else
self.aqs = base_query.filter(username=radcheck.username)
dtd = DTD( request, model, columns )
return JsonResponse(dtd.get_dict())
````
创建一个 URL 资源
````
from django.conf.urls import include, url
from django.contrib.auth.decorators import login_required
from .views import *
urlpatterns = [
url(r'^datatable.json$', login_required(StatoUtenzaCorso_DTJson), name='datatable_json'),
]
````
轻量级Django类,用于完整的Datatables服务器端处理实现。
https://datatables.net.cn/examples/data_sources/server_side.html
在寻找Django中Datatables服务器端处理的良好集成后,我对互联网上找到的内容进行了测试,但它们都存在相同的问题,即无法很好地管理外键关系。最终,我自行完成了它。
此代码已在Datatables 1.10.+ 和 Django 1.10.+ 上进行了测试。
要使其工作,只需将datatables放入您的HTML模板中,如下所示
```html
<!-- jQuery -->
<script src="/statics/js/vendors/jquery/dist/jquery.min.js"></script>
<!-- Datatables -->
<script src="/statics/js/vendors/datatables.net/js/jquery.dataTables.js"></script>
<!-- Datatables -->
<script>
$(document).ready(function() {
$('.datatable-responsive-serverside').DataTable({
"aLengthMenu": [
[25, 50, 100, 500, ], // -1],
[25, 50, 100, 500, ] //"All"]
],
"paging": true,
"responsive": true,
"processing": true,
"serverSide": true,
"ajax": "{% url 'appnamespace:viewname_json' %}",
// POST METHOD EXAMPLE HERE
//~ "ajax": {
//~ url: "{% url 'appnamespace:viewname_json' %",
//~ 方法: 'post',
//~ 数据: function(args) {
//~ 返回 {
//~ "args": JSON.stringify(args)
//~ };
//~ }
//~ },
});
});
</script>
```
需求
------------
从[这里](https://datatables.net.cn/download/)下载您首选的 DataTables 版本。
设置和示例
------------------
在您的 Python 环境中安装包。
````
pip install git+https://github.com/peppelinux/django-datatables-ajax.git
````
创建一个视图
````
from django.conf import settings
from django.contrib.auth.decorators import login_required
from django.db.models import Q
from django.http import HttpResponse, Http404
from django.http.response import HttpResponseRedirect
from django.http import JsonResponse
from .datatables import DjangoDatatablesServerProc
@login_required
def datatable_data(request)
radcheck = get_radcheck_active(request)
radius_accounts = _get_radius_accounts(request, radcheck)
model = RadiusPostAuth
columns = ['pk', 'username', 'reply', 'calling_station_id', 'date']
base_query = model.objects.filter(username__in=[i.username for i in radius_accounts]).exclude(calling_station_id='').order_by('-date')
class DTD(DjangoDatatablesServerProc)
def get_queryset(self)
if self.search_key
self.aqs = base_query.filter(
Q(username__icontains=self.search_key) | \
Q(reply__icontains=self.search_key) | \
Q(calling_station_id__icontains=self.search_key))
else
self.aqs = base_query.filter(username=radcheck.username)
dtd = DTD( request, model, columns )
return JsonResponse(dtd.get_dict())
````
创建一个 URL 资源
````
from django.conf.urls import include, url
from django.contrib.auth.decorators import login_required
from .views import *
urlpatterns = [
url(r'^datatable.json$', login_required(StatoUtenzaCorso_DTJson), name='datatable_json'),
]
````
项目详情
下载文件
下载适合您平台的可执行文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
django-datatables-ajax-0.8.tar.gz (4.1 kB 查看哈希值)