【问题标题】:Custom tag for pagination用于分页的自定义标签
【发布时间】:2014-02-15 13:48:42
【问题描述】:

我一直在尝试构建自己的分页标签 - pagetag。

但是当我渲染这个时:

        {% if people.has_previous %}
            <li><a href={% pagetag people.previous_page_number %}>&laquo;</a></li>
        {% else  %}
            <li class="disabled"><a href="#">&laquo;</a></li>
        {% endif %}

        {% for page in people.paginator.page_range  %}
            {% if page == people.number %}
                <li class="disabled"><a href="#">{{page}}</a></li>
            {% else %}
                <li><a href={% pagetag page %}>{{page}}</a></li>
            {% endif %}
        {% endfor %}

        {% if people.has_next %}
            <li><a href={% pagetag people.next_page_number %}>&raquo;</a></li>
        {% else %}
            <li class="disabled"><a href="#">&raquo;</a></li>
        {% endif %}

我在第一页得到以下链接:

            <li class="disabled"><a href="#">&laquo;</a></li>
                <li class="disabled"><a href="#">1</a></li>
                <li><a href=/?page=page>2</a></li>
                <li><a href=/?page=page>3</a></li>
               <li><a href=/?page=people.next_page_number>&raquo;</a></li>

不是所需的 ?page=2 等等。

def pagetag(parser, token):
    tokens = token.split_contents()
    print tokens
    if len(tokens) < 1:
        raise TemplateSyntaxError, "pagetag takes at least 1 arguments"
    return PageNode(tokens[1].strip())

如何正确传递参数?

【问题讨论】:

    标签: django pagination django-templates django-template-filters


    【解决方案1】:

    使用simple tags。例如:

    @register.simple_tag
    def pagetag(page):
        return '/?page=' + page
    

    那么,在您看来,请务必使用{{ }} 而不是{% %}

    <li><a href="{{ pagetag page }}">{{page}}</a></li>
    

    注意:不建议使用不同的标签来添加一个简单的字符串。就像在documentation 中一样。

    【讨论】:

    • 不只是一个标签,还可以连接request.GET中的其他参数。
    猜你喜欢
    • 2016-10-22
    • 2019-04-01
    • 1970-01-01
    • 2013-05-03
    • 2021-08-13
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多