Django 模板大数据分页 link 问题
Django template large data pagination link issue
我在我的模板中使用了 django 分页器。它在数据较少的情况下工作正常,但当有大量页面时效果不佳。
分页链接代码如下:
<div class="paginationWrapper mt-3">
{% if match_list.paginator.num_pages > 1 %}
<ul class="pagination">
{% if match_list.has_previous %}
<li>
<a href="?p={{ match_list.previous_page_number }}
{% if request.GET.search %}&search={{ request.GET.search }}
{% endif %}" class="page-link"><i class="fas fa-angle-double-left"></i></a>
</li>
{% endif %}
{% for j in match_list.paginator.page_range %}
{% if match_list.number == j %}
<li class="active"><a class="page-link" href="#">{{ j }}</a></li>
{% else %}
<li><a href="?p={{ j }}{% if request.GET.search %}&search={{ request.GET.search }}
{% endif %}" class="page-link">{{ j }}</a></li>
{% endif %}
{% endfor %}
{% if match_list.has_next %}
<li>
<a href="?p={{ match_list.next_page_number }}
{% if request.GET.search %}&search={{ request.GET.search }}{% endif %}
" class="page-link"><i class="fas fa-angle-double-right"></i></a>
</li>
{% endif %}
</ul>
{% endif %}
</div>
在此之后,我将在我的模板中获取链接,例如:
我真正想要的是在那之后我只想显示 10 个链接...显示更多任何人都可以帮助我解决这个问题我被困在这里
https://docs.djangoproject.com/en/3.1/topics/pagination/#paginating-a-listview
试试这个
{% load core %} // core here is template tag
{% if match_list.paginator.num_pages > 1 %}
<ul class="pagination justify-content-center">
{% if match_list.has_previous %}
<li class="page-item">
<a class="page-link" href="?{% param_replace page=1 %}">
First
</a>
</li>
{% else %}
<li class="page-item disabled">
<a class="page-link" href="#">
First
</a>
</li>
{% endif %}
{% if match_list.has_previous %}
<li class="page-item">
<a class="page-link" href="?{% param_replace page=match_list.previous_page_number %}">
«
</a>
</li>
{% else %}
<li class="page-item disabled">
<a class="page-link" href="#">
«
</a>
</li>
{% endif %}
{% for i in match_list.paginator.page_range %}
{% if match_list.number == i %}
<li class="page-item active">
<a class="page-link" href="#">{{ i }} <span class="sr-only">(current)</span>
</a>
</li>
{% elif match_list.number > i|add:"-5" and match_list.number < i|add:"+5"%}
<li class="page-item"><a class="page-link" href="?{% param_replace page=i %}">{{ i }}</a></li>
{% endif %}
{% endfor %}
{% if match_list.has_next %}
<li class="page-item">
<a class="page-link" href="?{% param_replace page=match_list.next_page_number %}">
»
</a>
</li>
{% else %}
<li class="page-item disabled">
<a class="page-link" href="#">
»
</a>
</li>
{% endif %}
{% if match_list.paginator.num_pages != match_list.number %}
<li class="page-item">
<a class="page-link" href="?{% param_replace page=match_list.paginator.num_pages %}">
Last
</a>
</li>
{% else %}
<li class="page-item disabled"><a class="page-link" href="#">Last</a></li>
{% endif %}
</ul>
{% endif %}
自定义模板标签
@register.simple_tag(takes_context=True)
def param_replace(context, **kwargs):
"""
"""
d = context['request'].GET.copy()
for k, v in kwargs.items():
d[k] = v
for k in [k for k, v in d.items() if not v]:
del d[k]
return d.urlencode()
输出
我在我的模板中使用了 django 分页器。它在数据较少的情况下工作正常,但当有大量页面时效果不佳。
分页链接代码如下:
<div class="paginationWrapper mt-3">
{% if match_list.paginator.num_pages > 1 %}
<ul class="pagination">
{% if match_list.has_previous %}
<li>
<a href="?p={{ match_list.previous_page_number }}
{% if request.GET.search %}&search={{ request.GET.search }}
{% endif %}" class="page-link"><i class="fas fa-angle-double-left"></i></a>
</li>
{% endif %}
{% for j in match_list.paginator.page_range %}
{% if match_list.number == j %}
<li class="active"><a class="page-link" href="#">{{ j }}</a></li>
{% else %}
<li><a href="?p={{ j }}{% if request.GET.search %}&search={{ request.GET.search }}
{% endif %}" class="page-link">{{ j }}</a></li>
{% endif %}
{% endfor %}
{% if match_list.has_next %}
<li>
<a href="?p={{ match_list.next_page_number }}
{% if request.GET.search %}&search={{ request.GET.search }}{% endif %}
" class="page-link"><i class="fas fa-angle-double-right"></i></a>
</li>
{% endif %}
</ul>
{% endif %}
</div>
在此之后,我将在我的模板中获取链接,例如:
我真正想要的是在那之后我只想显示 10 个链接...显示更多任何人都可以帮助我解决这个问题我被困在这里
https://docs.djangoproject.com/en/3.1/topics/pagination/#paginating-a-listview
试试这个
{% load core %} // core here is template tag
{% if match_list.paginator.num_pages > 1 %}
<ul class="pagination justify-content-center">
{% if match_list.has_previous %}
<li class="page-item">
<a class="page-link" href="?{% param_replace page=1 %}">
First
</a>
</li>
{% else %}
<li class="page-item disabled">
<a class="page-link" href="#">
First
</a>
</li>
{% endif %}
{% if match_list.has_previous %}
<li class="page-item">
<a class="page-link" href="?{% param_replace page=match_list.previous_page_number %}">
«
</a>
</li>
{% else %}
<li class="page-item disabled">
<a class="page-link" href="#">
«
</a>
</li>
{% endif %}
{% for i in match_list.paginator.page_range %}
{% if match_list.number == i %}
<li class="page-item active">
<a class="page-link" href="#">{{ i }} <span class="sr-only">(current)</span>
</a>
</li>
{% elif match_list.number > i|add:"-5" and match_list.number < i|add:"+5"%}
<li class="page-item"><a class="page-link" href="?{% param_replace page=i %}">{{ i }}</a></li>
{% endif %}
{% endfor %}
{% if match_list.has_next %}
<li class="page-item">
<a class="page-link" href="?{% param_replace page=match_list.next_page_number %}">
»
</a>
</li>
{% else %}
<li class="page-item disabled">
<a class="page-link" href="#">
»
</a>
</li>
{% endif %}
{% if match_list.paginator.num_pages != match_list.number %}
<li class="page-item">
<a class="page-link" href="?{% param_replace page=match_list.paginator.num_pages %}">
Last
</a>
</li>
{% else %}
<li class="page-item disabled"><a class="page-link" href="#">Last</a></li>
{% endif %}
</ul>
{% endif %}
自定义模板标签
@register.simple_tag(takes_context=True)
def param_replace(context, **kwargs):
"""
"""
d = context['request'].GET.copy()
for k, v in kwargs.items():
d[k] = v
for k in [k for k, v in d.items() if not v]:
del d[k]
return d.urlencode()
输出