2013-04-20 26 views
0

我試圖做一個分頁程序(使用Twitter引導)爲用戶在我的網站名單。我從Twitter的引導了HTML代碼如下所示:轉換Django的變量在模板詮釋

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

    <li><a href="https://stackoverflow.com/users/?page=1">...</a></li> 
    <li><a href="https://stackoverflow.com/users/?page=2">...</a></li> 
    <li><a href="https://stackoverflow.com/users/?page={{users.number}}">{{users.number}}</a></li> 
    <li><a href="https://stackoverflow.com/users/?page=4">...</a></li> 
    <li><a href="https://stackoverflow.com/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中添加,然後傳遞給我的模板?

+0

可能是你不應該推倒重來。你看過[django-bootstrap-pagination](https://github.com/jmcclell/django-bootstrap-pagination)還是[django-bootstrap-toolkit](https://github.com/dyve/django-bootstrap -工具包)? – alecxe 2013-04-20 20:05:54

+0

是的,你是對的。謝謝,但我需要了解django的變量。你知道如何處理所描述的問題嗎? – shutupandskate 2013-04-20 20:12:01

回答

0

add過濾器試圖自動轉換參數爲整數。因此,如果值可以轉換爲int,則{{ value|add:2 }}{{ value|add:"2" }}將返回6。而{{ value|add:-2 }}應該返回4.

但我認爲templatetag或過濾器也將是適合的。 只是一個簡單的函數,它可以獲得所需的數字,也可以是兩個方向上的步驟,例如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="https://stackoverflow.com/users/?page={{ n }}">{{ n }}</a></li> 
{% endfor %} 
+0

謝謝,這個作品非常棒! – shutupandskate 2013-04-21 07:21:37