DjangoviTabLe2的扩展可以动态显示或隐藏列

django-tables2-column-shifter的Python项目详细描述


django-tables2-列移位器

Latest PyPI versionTravis CIRequirements Status

关于应用程序: 使用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/

屏幕:

screen 1screen 2

如何安装:

  1. 使用以下命令安装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
    
  2. django_tables2_column_shifter添加到INSTALLED_APPS设置中(在django_tables2之后),如下所示

    INSTALLED_APPS = [
        ...,
        'django_tables2',
        'django_tables2_column_shifter',
        ...,
    ]
    
  3. 在基本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 = MyModel

views.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-table2TableExporterhttp://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

自定义:

  1. 如果使用同一个表类的多个实例,则应为每个实例使用不同的前缀:

    tab1 = MyModelTable(queryset, prefix='tab1')
    tab2 = MyModelTable(queryset, prefix='tab2')
    tab3 = MyModelTable(queryset, prefix='tab3')
    
  2. 要禁用移位器机制,请在表类中将False设置为shift_table_column(默认值为true):

    class MyModelTable(ColumnShiftTable):
       shift_table_column = False
       ...
    
  3. 默认情况下,序列中的所有列都是可见的,如果希望限制可见列, 重写方法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()
    

运行演示:

  1. 从https://github.com/djk2/django-tables2-column-shifter下载或克隆项目

    git clone https://github.com/djk2/django-tables2-column-shifter.git
    
  2. 转到测试项目目录:

    cd django-tables2-column-shifter/testproject
    
  3. 安装要求:

    pip install -r requirements.txt
    
  4. 运行django开发服务器:

    python manage.py runserver
    

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在导入到Google工作表时使用ApachePOI显示系列标签   java在Swing表上修改数据生成SQL   java TCP数据包在网络级别合并   java自动连线bean在线程位置为空   javasocket。禁用无线连接时getOutputStream()阻塞   JSON上的javascript字符串数组。stringify输出unicode字符   java在Oracle数据库中存储不同类型数据的最佳体验   Spring MVC中模板引擎后的java进程输出   不知从哪里来的java空字符串。   如何加载java。使用Adobe Flex的客户端的属性文件?   java如何替换多层括号之间的所有内容?   {JSONObject必须以java'开头   java使用commandButton或commandLink返回并管理HTML控件值   java Android大文本视图动态   java JMock需要自定义类   java Android应用程序在emulator中工作,但在设备中失败   java连接到derby数据库时使用什么文件路径格式?   java在一个函数调用中返回两个结果?