如何从 django-tables2 中删除分页区域中总行号的表示法
How to remove from django-tables2 a notation of the total row numbers in a pagination area
我无法从基本 django-tables2
example 重现 table 分页格式的相同外观。这是我的代码
型号:
#models.py
class Person(models.Model):
name = models.CharField(verbose_name="full name", max_length=200)
Table:
# tables.py
import django_tables2 as tables
from loaddata.models import Person
class PersonTable(tables.Table):
class Meta:
model = Person
# add class="paleblue" to <table> tag
attrs = {"class": "paleblue"}
查看:
#views.py
from django.shortcuts import render
from django_tables2 import RequestConfig
from loaddata.models import Person
from loaddata.tables import PersonTable
def people(request):
table = PersonTable(Person.objects.all())
RequestConfig(request, paginate={"per_page": 25}).configure(table)
return render(request, "loaddata/people.html", {"table": table})
此代码生成以下 table (#1
)
而根据 tutorial,table 应该如下所示 (#2
)
正如所见,我的 table (#1
) 没有显示当前页码,而是显示了数据系列的总数 (2 persons
)。但是如果view
中的分页per_page
参数改为1
,即
查看修改:
#views.py
...
RequestConfig(request, paginate={"per_page": 1}).configure(table)
...
那么我的table(#3
)会显示当前分页和多余的1 of 2 persons
.
我应该在代码中更改什么以从分页区域中删除数据系列的总数(删除 2 persons
、1 of 2 persons
)并强制显示当前页码,即使table 有一页(即使 table #1
与 table #2
相同)?
我正在使用:
python 3.4.3
django 1.9
django_tables2 1.1.6
如果您查看默认页面模板(例如@https://github.com/bradleyayers/django-tables2/blob/master/django_tables2/templates/django_tables2/table.html),您将看到以下两个块:
{% if table.page.has_previous or table.page.has_next %}
{% block pagination.current %}
<li class="current">
{% blocktrans with table.page.number as current and table.paginator.num_pages as total %}Page {{ current }} of {{ total }}{% endblocktrans %}
</li>
{% endblock pagination.current %}
{% endif %}
....
{% block pagination.cardinality %}
<li class="cardinality">
{% if total != count %}{% blocktrans %}{{ count }} of {{ total }}{% endblocktrans %}{% else %}{{ total }}{% endif %} {% if total == 1 %}{{ table.data.verbose_name }}{% else %}{{ table.data.verbose_name_plural }}{% endif %}
</li>
{% endblock pagination.cardinality %}
第一个块检查 table 是否有多个页面并显示页码 - 所以如果您想始终显示页码,您应该取消检查。另一个块显示项目的数量 - 所以你可以直接丢弃它。
现在,要覆盖 table 模板,有两种方法:
为您站点上的所有 django-tables2 tables 全局覆盖 table 模板:在您的应用程序中(或您的全局模板目录) ) 添加一个名为 django_tables2/table.html
的文件,然后从 django_tables2 的源中复制 table.html - 当然要进行上述编辑。那么你所有的 table 都将使用新模板。
仅覆盖一个模板:将我上面提到的 table.html 源复制到不同的地方(例如 mytable.html
),然后使用该模板呈现您的 table 通过将它传递给模板标签,例如 {% render table "mytable.html" %}
(https://django-tables2.readthedocs.io/en/latest/pages/template-tags.html#render-table)
我无法从基本 django-tables2
example 重现 table 分页格式的相同外观。这是我的代码
型号:
#models.py
class Person(models.Model):
name = models.CharField(verbose_name="full name", max_length=200)
Table:
# tables.py
import django_tables2 as tables
from loaddata.models import Person
class PersonTable(tables.Table):
class Meta:
model = Person
# add class="paleblue" to <table> tag
attrs = {"class": "paleblue"}
查看:
#views.py
from django.shortcuts import render
from django_tables2 import RequestConfig
from loaddata.models import Person
from loaddata.tables import PersonTable
def people(request):
table = PersonTable(Person.objects.all())
RequestConfig(request, paginate={"per_page": 25}).configure(table)
return render(request, "loaddata/people.html", {"table": table})
此代码生成以下 table (#1
)
而根据 tutorial,table 应该如下所示 (#2
)
正如所见,我的 table (#1
) 没有显示当前页码,而是显示了数据系列的总数 (2 persons
)。但是如果view
中的分页per_page
参数改为1
,即
查看修改:
#views.py
...
RequestConfig(request, paginate={"per_page": 1}).configure(table)
...
那么我的table(#3
)会显示当前分页和多余的1 of 2 persons
.
我应该在代码中更改什么以从分页区域中删除数据系列的总数(删除 2 persons
、1 of 2 persons
)并强制显示当前页码,即使table 有一页(即使 table #1
与 table #2
相同)?
我正在使用:
python 3.4.3
django 1.9
django_tables2 1.1.6
如果您查看默认页面模板(例如@https://github.com/bradleyayers/django-tables2/blob/master/django_tables2/templates/django_tables2/table.html),您将看到以下两个块:
{% if table.page.has_previous or table.page.has_next %}
{% block pagination.current %}
<li class="current">
{% blocktrans with table.page.number as current and table.paginator.num_pages as total %}Page {{ current }} of {{ total }}{% endblocktrans %}
</li>
{% endblock pagination.current %}
{% endif %}
....
{% block pagination.cardinality %}
<li class="cardinality">
{% if total != count %}{% blocktrans %}{{ count }} of {{ total }}{% endblocktrans %}{% else %}{{ total }}{% endif %} {% if total == 1 %}{{ table.data.verbose_name }}{% else %}{{ table.data.verbose_name_plural }}{% endif %}
</li>
{% endblock pagination.cardinality %}
第一个块检查 table 是否有多个页面并显示页码 - 所以如果您想始终显示页码,您应该取消检查。另一个块显示项目的数量 - 所以你可以直接丢弃它。
现在,要覆盖 table 模板,有两种方法:
为您站点上的所有 django-tables2 tables 全局覆盖 table 模板:在您的应用程序中(或您的全局模板目录) ) 添加一个名为
django_tables2/table.html
的文件,然后从 django_tables2 的源中复制 table.html - 当然要进行上述编辑。那么你所有的 table 都将使用新模板。仅覆盖一个模板:将我上面提到的 table.html 源复制到不同的地方(例如
mytable.html
),然后使用该模板呈现您的 table 通过将它传递给模板标签,例如{% render table "mytable.html" %}
(https://django-tables2.readthedocs.io/en/latest/pages/template-tags.html#render-table)