【问题标题】:convert django variable to int in a template在模板中将 django 变量转换为 int
【发布时间】:2013-04-14 00:36:21
【问题描述】:

我正在尝试为我网站上的用户列表制作分页器(使用 twitter 引导程序)。我从 twitter bootstrap 获取的 html 代码如下所示:

    <div class="pagination" >
    <ul>
    {% if users.has_previous %}
    <li><a href="?page={{ users.previous_page_number }}">Prev</a></li>
    {% endif %}

    <li><a href="/users/?page=1">...</a></li>
    <li><a href="/users/?page=2">...</a></li>
    <li><a href="/users/?page={{users.number}}">{{users.number}}</a></li>
    <li><a href="/users/?page=4">...</a></li>
    <li><a href="/users/?page=5">...</a></li>

    {% if users.has_next %}
    <li><a href="?page={{ users.next_page_number }}">Next</a></li>
    {% endif %}
    </ul>
    </div>

我还不知道在点的地方写什么。 如何将变量 {{users.number}} 转换为 int 以使用数字进行操作并获取( {{users.number}}-1 )等以放置它们而不是点?

我尝试使用过滤器,但它不起作用。我想我只能在 {% %} 中使用它们,而不能在 {{}} 中使用它们。

是否可以在模板中正确设置?或者我应该添加views.py然后传递给我的模板?

【问题讨论】:

标签: twitter-bootstrap django-templates


【解决方案1】:

add 过滤器尝试将参数自动转换为整数。所以{{ value|add:2 }}{{ value|add:"2" }} 将返回 6,如果值可以转换为 int。 {{ value|add:-2 }} 应该返回 4。

但我认为模板标签或过滤器也适用于此。 只是一个获得所需数字的简单函数,可能还有两个方向的步骤,例如2、然后返回[n-2, n-1, n, n+1, n+2]的列表。然后你可以循环遍历添加 li-tags 的列表。

这将是过滤器的一个示例:

# templates/templatetags/calculate_numbers.py

from django import template

register = template.Library()

@register.filter
def calculate_numbers(n, steps):
    n = int(n)     
    return range(n-steps, n+steps+1)

在你的模板上:

{% load calculate_numbers %}

{% for n in users.number|calculate_numbers:2 %}
<li><a href="/users/?page={{ n }}">{{ n }}</a></li>
{% endfor %}

【讨论】:

    猜你喜欢
    • 2018-06-20
    • 1970-01-01
    • 2016-08-26
    • 2016-11-26
    • 2021-11-01
    • 2011-06-17
    • 2017-07-05
    相关资源
    最近更新 更多