我想编写一个模板
- 是分页的(并非同一页上的所有列表项目(
- 编号为-tag,因为这是订购列表的最语义方法
- 可以逆转或不推动
- 这些数字链接到表示的模型(每个
li
-TAG都包含链接到模型的a
-TAG。(,这意味着该列表不是始终以1。
开头
我的模型:
class Mymodel(models.Model):
number = positiveIntegerField()
title = models.CharField(max_length=100)
[...]
number
是唯一的,有序的,当您用数字订购模型时,没有差距;数字是1个基于1的
我拥有的内容:( reverse
是布尔变量,它告诉列表是否必须逆转(
{% if reverse %}
<ol class="content" start="{{ article_list.0.number|add:article_list.count }}" reversed=true>
{% for article in article_list reversed %}
<li class="{% cycle '' '' '' '' 'seperate-bot border-gray' %}"><a href="{% url 'myapp:article' article.number %}">{{ article.title }}</a></li>
{% endfor %}
{% else %}
<ol class="content" start="{{ article_list.0.number }}">
{% for article in article_list %}
<li class="{% cycle '' '' '' '' 'seperate-bot border-gray' %}"><a href="{% url 'manifest:article' article.number %}">{{ article.alt_title }}</a></li>
{% endfor %}
{% endif %}
</ol>
不幸的是,错误计数向后模板部分错误:最后一个数字始终为1,不应该是。最后一个数字应为article_list.0.number
article_list.count
(或:article_list|length
(-1
;或last_list_item.number
,这会更好。
这是指:(为此示例pagined_by = 3(" |"因为所以改变了我的计数应该如何:(反向= true(
第1页:
| 3。lorem ipsum
| 2。lorem ipsum
| 1。lorem ipsum
第2页:
| 5。lorem ipsum
| 4。lorem ipsum
我得到的 :(只有第2页不好(
第2页:
| 2。lorem ipsum
| 1。lorem ipsum
有没有好的方法来避免这种效果?(它来自哪里?(在最佳情况下应该仅在模板中工作。
我不确定为什么您会得到结果,但这似乎是一种非常复杂的方法来做一些事情。
您可以使用内置的last
过滤器和with
模板标签访问列表中的最后一项。
{% with article_list|last as last_article %}
<ol class="content" start="{{ last_article.number }}" reversed=true>
{% endwith %}
但是,我建议您在视图函数中而不是在模板中进行订购和逆转。Django的模板语言是根据不适合非琐碎逻辑的选择。
至于编号,您实际上可以将值属性分配给有序列表元素。这将解决您的问题。
<li value={{ article.number }} ...
示例:
<ol>
<li value=3>it doesn't
<li>have to
<li>make
<li value=42>sense
</ol>