===========
django-datatables-view is a base view for handling server side processing for the awesome datatables (http://datatables.net).
django-datatables-view simplifies handling of sorting, filtering and creating JSON output, as defined at:
http://datatables.net/usage/server-side
Usage
=====
1. pip install django-datatables-view
2. views.py:
django_datatables_view uses GenericViews, so your view should just inherit from base class: BaseDatatableView, and override few things.
These are:
* 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 in order by).
* get_initial_queryset - method that should return queryset used to populate datatable
* filter_queryset - if you want to filter your datatable then override this method
* prepare_results - this method should return list of lists (rows with columns) as needed by datatables
See example below:
:::python
from django_datatables_view.base_datatable_view import BaseDatatableView
class OrderListJson(BaseDatatableView):
# 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 get_initial_queryset(self):
# return queryset used as base for futher sorting/filtering
# these are simply objects displayed in datatable
return MyModel.objects.all()
def filter_queryset(self, qs):
# use request parameters to filter queryset
# simple example:
sSearch = self.request.POST.get('sSearch', None)
if sSearch:
qs = qs.filter(name__istartswith=sSearch)
# 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,
"%s %s" % (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
3. urls.py
Add typical django's clause:
::: python
# ...
url(r'^my/datatable/data/$', login_required(OrderListJson.as_view()), name='order_list_json'),
# ....
4. Define HTML + JavaScript part as usual, eg:
Example JS:
::: javascript
$(document).ready(function() {
var oTable = $('.datatable').dataTable({
// ...
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "{% url order_list_json %}"
});
// ...
});
Metadata
Release files for django-datatables-view 1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| django-datatables-view-1.4.tar.gz | 5.9 kB | Without provenance | Details for django-datatables-view-1.4.tar.gz |
Release files / django-datatables-view-1.4.tar.gz
| Download URL | django-datatables-view-1.4.tar.gz |
|---|---|
| Size | 5.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
15fa19e20eb57c13632a9e5be9831b82a98fbd5137acc8ea6f71610e97a4dbaf
|
|
BLAKE2b-256 checksum How to use checksums |
9f16dddfda425982d5d2b95c05f292025d33ab5847bb96ed1fc40b9f8fc605dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for django-datatables-view 1.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.