
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
|Build Status| |PyPI|
.. figure:: https://dl.dropboxusercontent.com/u/94696700/example.png :alt: preview
django-datatable is a simple Django app to organize data in tabular
form based on datatable <http://datatables.net>
__ and
bootstrap <http://getbootstrap.com/>
__.
It is worth mentioning that the design of this project makes reference
to django-table2 <https://github.com/bradleyayers/django-tables2>
__
and is mainly for the purpose of learning. I really appreciate anyone
making a pull-request to improve it.
Python 2.x
jQuery 1.6+
Django 1.5+
Bootstrap 3.0
Setup Django-datatable application in Python environment:
::
$ pip install django-datatable
Define a simple model named Person:
::
# example/app/models.py
class Person(models.Model):
name = models.CharField(max_length=100)
Add "table" to your INSTALLED_APPS setting like this:
::
INSTALLED_APPS = (
...,
'table',
)
Add some data so you have something to display in the table. Now define a PersonTable class without any options in the table file.
::
# example/app/tables.py
from models import Person
from table import Table
from table.columns import Column
class PersonTable(Table):
id = Column(field='id')
name = Column(field='name')
class Meta:
model = Person
And pass a table instance to the view.
::
# example/app/views.py
from django.shortcuts import render
from app.tables import PersonTable
def people(request):
people = PersonTable()
return render(request, "index.html", {'people': people})
Finally, implement the template:
::
{# example/templates/index.html}
{% load static %}
{% load table_tags %}
<link href="{% static 'table/css/bootstrap.min.css' %}" rel="stylesheet">
<script src="{% static 'table/js/jquery.min.js' %}"></script>
<script src="{% static 'table/js/bootstrap.min.js' %}"></script>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>person</title>
</head>
<body>
<div class="container" style="margin-top: 10px">
<h1>people</h1>
<br />
{% render_table people %}
</div>
</body>
</html>
Render the whole table by simple tag {% render_table %}
, pass
Table
instance as single argument.
::
{% render_table table %}
Model
Uses a django MTV model as table data source, and queries all data in
database by default. See **model** in table options for details.
QuerySet
Similiar to Model, but pass queryset when you initialize the table instance instead of defining model option. Basically, it is used to filter or sort data you want to display in table.
::
Models:
# models.py
class Person(models.Model):
name = models.CharField(max_length=100)
Tables:
# tables.py
from models import Person
from table import Table
from table.columns import Column
class PersonTable(Table):
id = Column(field='id')
name = Column(field='name')
Views:
# views.py
from django.shortcuts import render
from models import Person
from app.tables import PersonTable
def people(request):
people = PersonTable(Person.objects.all())
return render(request, "index.html", {'people': people})
Dict-List
Use a list of dictionaries as table data source. Fields declared in
columns correspond to the dictionary keys.
::
Tables:
# tables.py
from table import Table
from table.columns import Column
class PersonTable(Table):
id = Column(field='id')
name = Column(field='name')
Views:
# views.py
from django.shortcuts import render
from app.tables import PersonTable
def people(request):
data = [{'id': 1, 'name': 'John'}, {'id': 2, 'name': 'Tom'}]
people = PersonTable(data)
return render(request, "index.html", {'people': people})
Built-in Ajax
For large amounts of data, loading them on front-end entirely is impossible. So, django-table provides a simle option 'ajax' to load data from the server-side asynchronously.
Note that once toggling ajax
, the model
option is necessary.
Django-table will do paging/searching/sorting based on
ModelClass.objects.all()
.
::
Urls:
# urls.py
urlpatterns = patterns('',
url(r'^table/', include(table.urls')),
)
Tables:
# tables.py
from table import Table
from table.columns import Column
class PersonTable(Table):
id = Column(field='id')
name = Column(field='name')
class Meta:
model = Person
ajax = True
Custom Ajax
If you want to customize base data, use ``ajax_source`` option and
implement your own Class-based View by subclassing ``FeedDataView``.
::
Tables:
# tables.py
class PersonTable(Table):
id = Column(field='id')
name = Column(field='name')
class Meta:
model = Person
ajax = True
ajax_source = reverse_lazy('table_data')
Urls:
# urls.py
urlpatterns = patterns('',
url(r'^table/data/$', MyDataView.as_view(), name='table_data'),
)
Views:
# views.py
from table.views import FeedDataView
from app.tables import PersonTable
class MyDataView(FeedDataView):
token = PersonTable.token
def get_queryset(self):
return super(MyDataView, self).get_queryset().filter(id__gt=5)
Columns
-------
- Column
- Link Column
- Datetime Column
- Checkbox Column
- Sequence Column
- Calendar Column
Widgets
-------
- search-box
- info-label
- pagination
- length-menu
- exten-button(deprecated)
API Reference
-------------
- `wiki <https://github.com/shymonk/django-datatable/wiki/API-Reference>`__
.. |Build Status| image:: https://travis-ci.org/shymonk/django-datatable.svg?branch=master
:target: https://travis-ci.org/shymonk/django-datatable
.. |PyPI| image:: https://img.shields.io/pypi/v/django-datatable.png
:target: https://pypi.python.org/pypi/django-datatable
FAQs
A simple Django app to origanize data in tabular form.
We found that django-datatable demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.