Skip to main content

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)

Source distribution for jinja-datatables 0.0.8
File Size Uploaded
jinja_datatables-0.0.8.tar.gz 6.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jinja-datatables 0.0.8
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.0.8 This release

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

3 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page