DjangoviTabLe2的扩展可以动态显示或隐藏列
django-tables2-column-shifter的Python项目详细描述
django-tables2-列移位器
关于应用程序: 使用jquery动态显示或隐藏列的django-tables2的简单扩展。 应用程序使用Web存储来存储列是否可见的信息。 使用jquery、bootstrap3或bootstrap4和django>;=1.9。
经毒物检测:
- Python :2.7, 3.6, 3.7
- Django : 1.9, 1.10, 1.11, 2.0, 2.1
- django-tables2 : 1.5, 1.6, …, 1.21, 2.0, master
支持:
- Django >= 1.9
- django-tables2 >= 1.5.0 (earlier version probably will be work but wasn’t tested)
- bootstrap2 / bootstrap3 / bootstrap4 / bootstrap4.1.3
- JQuery
支持的区域设置:
- EN - (English)
- PL - (Polish)
- EL - (Greek / Hellenic Republic)
- PT-BR - (Portuguese - Brazilian)
有关此处django表的详细信息:https://django-tables2.readthedocs.io/
屏幕:
如何安装:
使用以下命令安装django-tables2-column-shifter:
pip install django-tables2-column-shifter or pip install git+https://github.com/djk2/django-tables2-column-shifter or pip install django-tables2-column-shifter.zip or pip install django-tables2-column-shifter.tar.gz
将django_tables2_column_shifter添加到INSTALLED_APPS设置中(在django_tables2之后),如下所示
INSTALLED_APPS = [ ..., 'django_tables2', 'django_tables2_column_shifter', ..., ]
在基本django模板中添加js脚本的路径:django_tables2_column_shifter.min.js。 必须在jquery.js aand bootstrap.js之后和标记之前添加脚本。
base.html:
{% load static %} <body> ... ... <script src="{% static "jquery.min.js" %}"></script> {# require #} <script src="{% static "bootstrap/js/bootstrap.min.js" %}"></script> <script type="text/javascript" src="{% static "django_tables2_column_shifter/js/django_tables2_column_shifter.min.js" %}"> </script> </body>
用法:
要使用app,必须从django_tables2_column_shifter.tables.ColumnShiftTable
继承表类models.py - create normal model:
from django.db import models class MyModel(models.Model): first_name = models.CharField("First name", max_length=50) last_name = models.CharField("Last name", max_length=50)tables.py - change inherit to ColumnShiftTable:
from django_tables2_column_shifter.tables import ColumnShiftTable from app.models import MyModel # By default you probably inherit from django_table2.Table # Change inherit to ColumnShiftTable class MyModelTable(ColumnShiftTable): class Meta: model = MyModelviews.py - In your view, nothing changes:
from .tables import MyModelTable from .models import MyModel def simple_list(request): queryset = MyModel.objects.all() table = MyModelTable(queryset) return render(request, 'template.html', {'table': table})template.html - use default render_table tag to display table object (using bootstrap3 / bootstrap4):
{% extends "base.html" %} {% load django_tables2 %} {% render_table table %}
要检索不可见的列,可以使用$.django_tables2_column_shifter_hidden()api。您可以传递页中表的基于0的索引(即使用$.django_tables2_column_shifter_hidden(1)来获取页中第二个表的隐藏列),也可以不带参数地使用它来检索第一个表的隐藏列。此API返回具有不可见列名的数组。
当您只想导出可见列时,就可以使用这些列,即当用户单击导出按钮时,它会在导出按钮的href中附加一个&excluded_columns=col1,col2,然后django-table2TableExporter(http://django-tables2.readthedocs.io/en/latest/pages/export.html#excluding-columns)使用它来排除这些列,例如
exporter = TableExport(‘csv’, table, exclude_columns=self.request.GET.get(‘excluded_columns’).split(‘,))
bootstrap2(支持旧项目):
如果在项目中使用bootstrap v2,那么表类应该继承自columnshifttablebootstrap2 从django_tables2_column_shifter.tables导入。
警告:
警告:-如果对queryset(不是表类实例)使用{%render_table%}标记, django-tables2-column-shifter将不工作。queryset没有template属性:
{% load django_tables2 %} {% render_table queryset %} {# not work #}
警告:-如果使用的模板与^{tt11}不同$ 要呈现表,可能django-tables2-column-shifter不起作用。 您的自定义模板应该继承自django_tables2_column_shifter/table.html
自定义:
如果使用同一个表类的多个实例,则应为每个实例使用不同的前缀:
tab1 = MyModelTable(queryset, prefix='tab1') tab2 = MyModelTable(queryset, prefix='tab2') tab3 = MyModelTable(queryset, prefix='tab3')
要禁用移位器机制,请在表类中将False设置为shift_table_column(默认值为true):
class MyModelTable(ColumnShiftTable): shift_table_column = False ...
默认情况下,序列中的所有列都是可见的,如果希望限制可见列, 重写方法get_column_default_show(self),如下所示:
class MyModelTable(ColumnShiftTable): def get_column_default_show(self): self.column_default_show = ['column1', 'column2'] return super(MyModelTable, self).get_column_default_show()
运行演示:
从https://github.com/djk2/django-tables2-column-shifter下载或克隆项目
git clone https://github.com/djk2/django-tables2-column-shifter.git
转到测试项目目录:
cd django-tables2-column-shifter/testproject
安装要求:
pip install -r requirements.txt
运行django开发服务器:
python manage.py runserver