Jinja-Datatables
A python library to simplify rendering datatables in jinja templates
Note: This tool is in development and doesnt 100% work yet, all of it is untested
TODO
- Write test for html
- Add detail row functionality
- Make filters an option
Install
pip install jinja-datatables
Usage
See this repo's tests folder for an example Currently only flask-ajax completed
1.) Create a table view object
There are currently three options
From Ajax
If you want to get all your data asynchronously from a endpoint you can create a datatable oject like this
from jinja_datatables.datatable_classes import DatatableColumn, AjaxDatatable
columns = [
DatatableColumn("data_name", "Column Name", "filter_text"
]
endpoint = "/get_data"
table_view = AjaxDatatable(
columns,
None,
None,
endpoint,
)
From a JS array
If you have all your data defined in a JS array you can create a datatable object like this:
from jinja_datatables.datatable_classes import DatatableColumn, JSArrayDatatable
columns = [
DatatableColumn("data_name", "Column Name", "text"),
]
js_array = "dataArray"
table_view = JSArrayDatatable(
columns,
None,
None,
js_array,
)
For your endpoint, make sure it returns just an array of your data, functionality to customize this behavior might be added in future
From HTML
This is completely untested
If you already have your table in html, then you can easily instantiate a datatable on it like this:
from jinja_datatables.datatable_classes import DatatableColumn, HTMLDatatable
columns = [
DatatableColumn("data_name", "Column Name", "filter_text"),
]
table_view = HTMLDatatable(
columns,
None,
None,
)
2.) Instantiate Jinja environment
from jinja2 import Environment
from jinja_datatables.jinja_extensions.datatableext import DatatableExt
env = Environment(extensions=[DatatableExt])
For flask this will be handled by attaching an extension like this:
app = Flask(__name__) # , instance_relative_config=True)
app.jinja_options["extensions"].append(DatatableExt)
3.) Render Template
In python
template = env.get_template("datatable_template.html")
template.render(table_view=table_view)
In your template file
{% datatable table_view %}
Contributing
I have no idea how contributing works. Make a pull request? Send me a message?
I would greatly appreciate help on how to test this
Release files for jinja-datatables 0.0.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jinja_datatables-0.0.8.tar.gz | 6.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jinja_datatables-0.0.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:16.5 kB
Release files / jinja_datatables-0.0.8.tar.gz
| Download URL | jinja_datatables-0.0.8.tar.gz |
|---|---|
| Size | 6.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fc7b89925d11de06277a35381fc5cc22d70e42b73589ce20f67f3f78cf2211c1
|
|
BLAKE2b-256 checksum How to use checksums |
ded1a427a4224b70ad06d7258640116a75ba272d1ff6d015f0e6d84a674b1eea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.3.1 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.5
|
Release files / jinja_datatables-0.0.8-py3-none-any.whl
| Download URL | jinja_datatables-0.0.8-py3-none-any.whl |
|---|---|
| Size | 9.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
98eb7df0b8ab651ced987c102d634e1ef9a618c26613fca8aa58a738d6896154
|
|
BLAKE2b-256 checksum How to use checksums |
9846a606e9726748589cb5c1feffd15e0b99524d18983ef1b8746d0c0b66a317
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.3.1 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.5
|