Django:如何将for变量传递给查询字符串?

时间:2018-09-11 12:33:39

标签: html django pagination

我正在尝试解决Django应用中的一些分页问题。由于使用的是previous_page_number之类的现有变量,因此使用“上一个”和“下一个”按钮可以很好地工作,但是我不确定如何使第1页,第2页,第N页按钮起作用。这是上一页代码,可以很好地工作:

{% if table.page and table.paginator.num_pages > 1 %}
    {% block pagination %}
    <nav class="pagination is-centered" role="navigation" aria-label="pagination">
        {% block pagination.previous %}
        {% if table.page.has_previous %}
            <a href="{% querystring table.prefixed_page_field=table.page.previous_page_number %}" class="pagination-previous">Previous</a>
        {% else %}
            <a href="#" class="pagination-previous" disabled>Previous</a>
        {% endif %}
        {% endblock pagination.previous %}

这是我当前的分页范围代码,不是。具体来说,else段就是我无法工作的部分。

{% block pagination.range %}
{% if table.page.has_previous or table.page.has_next %}
    <ul class="pagination-list">
    {% for p in table.page|table_page_range:table.paginator %}
        {% if table.page.number == p %}
        <li>
            <a class="pagination-link is-current is-dark" aria-label="Page {{ table.page.number }}" aria-current="page">{{ table.page.number }}</a>
        </li>
        {% else %}
        <li>
            <a href="{% querystring table.prefixed_page_field=table.page.p %}" class="pagination-link" aria-label="Page {{ p }}">{{ p }}</a>
       </li>
       {% endif %}
   {% endfor %}
   </ul>
{% endif %}
{% endblock pagination.range %}

当前,分页不起作用,所传递的URL以page =而不是page = p结束,无论当时的p是什么。我不确定如何将p作为可读变量传递,以使其出现在URL中。我尝试使用与查询字符串中未包含的代码其他部分相同的格式。

{% else %}
<li>
    <a href="{% querystring table.prefixed_page_field=table.page.{{ p }} %} class="pagination-link" aria-label="Page {{ p }}">{{ p }}</a>
   </li>
{% endif %}

这会导致导致根本无法加载页面的错误,因为Django无法协调{{部分。

1 个答案:

答案 0 :(得分:0)

<a href="yourlink.domain/?page=1">Display</a> 

您可以像这样从views.py中获取

page = request.GET.get("page", ""), 

如果页面不存在,则可以为他们提供默认值

page = request.GET.get("page", "1")