在搜索解决方案后,我决定在这个问题上再问一个问题。
所以。条件:
- 类ListView有paginate_by = 12
- 在html-template中有下拉列表,其中有几个选项可以使用POST请求更改我的paginate_by
- 一开始工作正常,页面上的对象更改次数和当前页数
- 显示分页链接我更喜欢使用来自https://www.tummy.com/articles/django-pagination/
的食谱 - 必须进行更正,但显示指向不同页面的链接
问题:
- 在更改类ListView的paginat_by后,使用下拉列表,我移动到下一页,paginate_by
返回第一个值= 12,当然返回页面上的前一个对象数和当然页数
...顺便说一下 - 在第一个下拉列表中显示所选数字12
,但是在更改值之后它会选择第一个值,即使我选择了最后一个值,并且页数根据最后一个值更改
我的问题:
- 每次呈现模板页面时,属性paginate_by
是否都返回到第一个(12)值?有没有办法让它保持更长时间?
- 我想我可以使用GET请求来加密它,将它放在每个href
中,但它不是来自tummy.com的当前链接配方的选项
如果有帮助的话。代码很少:
使用POST请求非常简单且有效地更改paginate_by
属性
def post(self, request, *args, **kwargs):
per_pages = request.POST.get('items_per_page')
if per_pages:
self.paginate_by = per_pages
return super(FlatsList, self).get(request, *args, **kwargs)
下拉列表
<div class="items-per-page">
<form action="." method="post" id="items_on_page">
{% csrf_token %}
<div class="sel form-group">
<select id="items_per_page" name="items_per_page"
onchange="this.form.submit()">
{% for item in per_page_options %}
<option
{% ifequal item paginate_by %}
selected="selected"
{% endifequal %}
value="{{ item }}">{{ item }}</option>
{% endfor %}
</select>
</div>
</form>
</div>
其他网页链接的当前tempaltetag变种
<div class="col-md-12 clear">
<div class="pull-right">
<div class="pagination">
<ul>
{% if page_obj.has_previous %}
<li><a href="?page={{ page_obj.previous_page_number }}">
<i class="fa fa-arrow-left fa-lg" aria-hidden="true">
</i> Ранее</a></li>
{% endif %}
{% if show_first %}
<li><a href="?page=1">1</a></li>
<span class="ellipsis">...</span>
{% endif %}
{% for linkpage in page_numbers %}
{% ifequal page_obj.number linkpage %}
<li class="active"><a>{{ page_obj.number }}</a></li>
{% else %}
<li><a href="?page={{ linkpage }}">{{ linkpage }}</a></li>
{% endifequal %}
{% endfor %}
{% if show_last %}
<span class="ellipsis">...</span>
<li><a href="?page={{ paginator.num_pages }}">{{
paginator.num_pages }}</a></li>
{% endif %}
{% if page_obj.has_next %}
<li><a href="?page={{ page_obj.next_page_number }}">
Далее <i class="fa fa-arrow-right fa-lg"
aria-hidden="true"></i></a></li>
{% endif %}
</ul>
</div>
</div>
</div>
有什么想法吗?
非常感谢。