Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django模板中使用<;ol>-标签_Django_Django Templates_Django Template Filters - Fatal编程技术网

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
    -标记包含链接到模型的
    a
    -标记)。这意味着列表不总是以1开头

我的模型:

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 }} ...