Seamless integration between Django REST framework and Datatables (https://datatables.net) with supporting Datatables editor
Project description
django-rest-framework-datatables-editor
Overview
This package provides seamless integration between Django REST framework and Datatables with supporting Datatables editor.
It handles searching, filtering, ordering and most usecases you can imagine with Datatables.
You don’t have to create a different API, your API still work exactly the same .
How to use
Install
$ pip install djangorestframework-datatables-editor
If you need the functionality of the editor, you also need to download the data editor from here, the JS+CSS version, and put the downloaded files in static folder.
Configuration
To enable Datatables support in your project, add 'rest_framework_datatables_editor' to your INSTALLED_APPS, and modify your REST_FRAMEWORK settings like this:
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
'rest_framework_datatables_editor.renderers.DatatablesRenderer',
),
'DEFAULT_FILTER_BACKENDS': (
'rest_framework_datatables_editor.filters.DatatablesFilterBackend',
),
'DEFAULT_PAGINATION_CLASS': 'rest_framework_datatables_editor.pagination.DatatablesPageNumberPagination',
'PAGE_SIZE': 50,
}
For using Datatables editor you should use DatatablesEditorModelViewSet instead ModelViewSet or add EditorModelMixin to your views.
And that’s it !
Your API is now fully compatible with Datatables and will provide searching, filtering, ordering and pagination without any modification of your API code ! For using Datatables editor you should use DatatablesEditorModelViewSet instead ModelViewSet or add EditorModelMixin to your views.
Configuring Datatables and Datatables editor
The URL for connecting datatables is the URL of your view with ?format=datatables
The URL connecting datatables editor is the URL of your view with editor/
Full documentation is available on Read the Docs !
Also you’ll need download Datatables editor.
Example of HTML code:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Rolling Stone Top 500 albums of all time</title>
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/dataTables.bootstrap4.min.css">
<link rel="stylesheet" href="https://cdn.datatables.net/buttons/1.5.6/css/buttons.bootstrap4.min.css">
<link rel="stylesheet" href="https://cdn.datatables.net/select/1.3.0/css/select.bootstrap4.min.css">
<link rel="stylesheet" href="/static/css/editor.bootstrap4.min.css">
</head>
<body>
<div class="container" style="font-size: .9em;">
<div class="row">
<div class="col-sm-12">
<table id="albums" class="table table-striped table-bordered" style="width:100%">
<thead>
<tr>
<th>Rank</th>
<th>Artist</th>
<th>Album name</th>
<th>Year</th>
<th>Genres</th>
</tr>
</thead>
</table>
</div>
</div>
</div>
<script src="//code.jquery.com/jquery-3.3.1.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/js/bootstrap.min.js"></script>
<script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.5.6/js/dataTables.buttons.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.5.6/js/buttons.bootstrap4.min.js"></script>
<script src="https://cdn.datatables.net/select/1.3.0/js/dataTables.select.min.js"></script>
<script src="/static/js/dataTables.editor.js"></script>
<script src="/static/js/editor.bootstrap4.min.js"></script>
<script>
$(document).ready(function () {
editor = new $.fn.dataTable.Editor({
ajax: "/api/albums/editor/?format=datatables",
table: "#albums",
fields: [{
label: "rank",
name: "rank",
}, {
label: "artist:",
name: "artist.id",
type: "select"
}, {
label: "name:",
name: "name",
}, {
label: "year:",
name: "year",
}]
});
var table = $('#albums').DataTable({
"serverSide": true,
dom: "Bfrtip",
"ajax": "/api/albums/?format=datatables",
"columns": [
{"data": "rank", "searchable": false},
{"data": "artist.name", "name": "artist.name"},
{"data": "name"},
{"data": "year"},
{"data": "genres", "name": "genres.name", "sortable": false},
],
select: true,
buttons: [
{extend: "create", editor: editor},
{extend: "edit", editor: editor},
{extend: "remove", editor: editor}
]
});
table.buttons().container()
.appendTo($('.col-md-6:eq(0)', table.table().container()));
});
</script>
</body>
</html>
Thanks
The project is based on the project django-rest-framework-datatables by David Jean Louis
Requirements
Python (2.7, 3.4, 3.5, 3.6, 3.7, 3.8)
Django (1.9, 1.11, 2.0, 2.1, 2.2, 3.0)
Django REST Framework (3.9, 3.10, 3.11)
Example project
To play with the example project, just clone the repository and run the dev server.
$ git clone https://github.com/VVyacheslav/DRF-datatables-editor.git
$ cd DRF-datatables-editor
Activate virtualenv.
$ pip install -r requirements-dev.txt
$ python example/manage.py runserver
$ firefox http://127.0.0.1:8000
Testing
Install development requirements.
$ pip install -r requirements-dev.txt
Run the tests.
$ python example/manage.py test
You can also use the excellent tox testing tool to run the tests against all supported versions of Python and Django. Install tox globally, and then simply run:
$ tox
If you want to check the coverage, use:
$ coverage run ./example/manage.py test
$ coverage report -m
Changelog
Version 0.3.3 (2020-05-17):
Added support for Django 3.0
Version 0.3.2 (2019-05-23):
Fixed checking fields when deleting
Version 0.3.1 (2019-05-22):
Fixed requirements
Version 0.3.0 (2019-05-06):
Added checking of the writable fields of Datatables Editor passed to Django
Added information about CSRF authorization to the documentation
Version 0.2.1 (2019-04-29):
Added documentation
Version 0.2.0 (2019-04-20):
Added tests for editor functionality
Version 0.1.0 (2019-04-15):
Initial release.
New project released with supporting Datatables editor.
The project is based on django-rest-framework-datatables by David Jean Louis)
Version 0.5.0 (2019-03-31):
The changelog bellow is the changelog of django-rest-framework-datatables by David Jean Louis)
Fixed total number of rows when view is using multiple filter back-ends
New meta option datatables_extra_json on view for adding key/value pairs to rendered JSON
Minor docs fixes
Version 0.4.1 (2018-11-16):
Added support for Django 2.1 and DRF 3.9
Updated README
Version 0.4.0 (2018-06-22):
Added top level filtering for nested serializers
Added multiple field filtering
Added a ?keep= parameter that allows to bypass the filtering of unused fields
Better detection of the requested format
Fixed typo in Queryset.count() method name
Version 0.3.0 (2018-05-11):
Added a serializer Meta option datatables_always_serialize that allows to specify a tuple of fields that should always be serialized in the response, regardless of what fields are requested in the Datatables request
Optimize filters
Use AND operator for column filtering instead of OR, to be consistant with the client-side behavior of Datatables
Version 0.2.1 (2018-04-11):
This version replaces the 0.2.0 who was broken (bad setup.py)
Version 0.2.0 (2018-04-11):
Added full documentation
Removed serializers, they are no longer necessary, filtering of columns is made by the renderer
Version 0.1.0 (2018-04-10):
Initial release.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file djangorestframework-datatables-editor-0.3.3.tar.gz
.
File metadata
- Download URL: djangorestframework-datatables-editor-0.3.3.tar.gz
- Upload date:
- Size: 12.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 735b66a574694fcf958a58a364fd070c18866c3ac845f96490ac648858415465 |
|
MD5 | da129697db47ecb9c66cd810ca2a9fdc |
|
BLAKE2b-256 | 0c9047f0f3e104e64c9f6332e7bddb761f97e8765d7f94fa5385ffb2693e737b |
File details
Details for the file djangorestframework_datatables_editor-0.3.3-py2.py3-none-any.whl
.
File metadata
- Download URL: djangorestframework_datatables_editor-0.3.3-py2.py3-none-any.whl
- Upload date:
- Size: 11.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9c688a553e4d0c78324969b695ecd7cfcb8903edd57c2d462f9eb17966daa7e0 |
|
MD5 | 49c1f931406436c6697ec9baab702de8 |
|
BLAKE2b-256 | 259e9d0ed628d1575e56bef9b549fd46a57a161d28be5aa11680120709835545 |