django模板中使用<;ol>-标签
我想写一个模板django模板中使用<;ol>-标签,django,django-templates,django-template-filters,Django,Django Templates,Django Template Filters,我想写一个模板 分页(不是同一页上的所有列表项) 使用-tag进行编号,因为这是对列表进行排序的最具语义的方式 是否可以反转 数字链接到所表示的模型(每个li-标记包含链接到模型的a-标记)。这意味着列表不总是以1开头 我的模型: class Mymodel(models.Model): number = positiveIntegerField() title = models.CharField(max_length=100) [...] 编号是唯一的、已订购的,当您订
- 分页(不是同一页上的所有列表项)
- 使用-tag进行编号,因为这是对列表进行排序的最具语义的方式
- 是否可以反转
- 数字链接到所表示的模型(每个
-标记包含链接到模型的li
-标记)。这意味着列表不总是以1开头a
我的模型:
class Mymodel(models.Model):
number = positiveIntegerField()
title = models.CharField(max_length=100)
[...]
编号
是唯一的、已订购的,当您订购带有编号的型号时,没有间隙;数字是以1为基础的
我所拥有的:(
reverse
是一个布尔变量,它告诉列表是否需要反转)
{%if reverse%}
{项目列表%1中的项目为%1}
{%endfor%}
{%else%}
{文章列表%中的文章为%0}
{%endfor%}
{%endif%}
不幸的是,反向模板部分计数错误:最后一个数字始终为1,这是不应该的。最后一个数字应该是
文章列表.0.数字
+文章列表.计数
(或:文章列表|长度
)-1
;或者last\u list\u item.number
那样更好
这意味着:(在那个例子中,分页为3)因为这样会改变我的计数
应该是什么样子:(reverse=true)
第1页:
|三,。同侧眼睑
|二,。同侧眼睑
|一,。同侧眼睑
第2页:
|五,。同侧眼睑
|四,。同侧眼睑
我得到了什么(只有第2页不好)
第2页:
|二,。同侧眼睑
|一,。同侧眼睑
有没有避免这种影响的好方法?(它从何而来?)在最好的情况下,它应该只在模板中工作。我不知道为什么会得到这样的结果,但这似乎是一种非常复杂的方法来做一些非常简单的事情 您可以使用内置的
last
过滤器和with
模板标记访问列表中的最后一项
{% with article_list|last as last_article %}
<ol class="content" start="{{ last_article.number }}" reversed=true>
{% endwith %}
{%与文章列表|最后为最后一篇文章%}
{%endwith%}
但是,我建议您在视图函数中而不是在模板中进行排序和反转。Django的模板语言选择不适合非平凡逻辑
至于编号,实际上可以显式地将value属性指定给有序列表元素。这会解决你的问题
<li value={{ article.number }} ...
谢谢!我不知道有类似于value
的内容,为什么不在视图中这样做,原因是,如果我覆盖了get\u queryset
,当前页面上可能会有其他条目。
<li value={{ article.number }} ...