一、分页
代码如下vim views.py
from django.core.paginator import Paginator
def property_list(request):
messages = models.ProdDetail.objects.all()
limit = 25
paginator = Paginator(messages, limit) # 按每页25条分页
page = request.GET.get('page', '1') # 默认跳转到第一页
result = paginator.page(page)
return render(request, 'lists.html', {'contacts': result})
vim lists.html
<div class="layui-card-body ">
<div class="page">
<div>
{% if contacts.has_previous %}
<a class="prev" href="?page=1"><<</a>
<a class="prev" href="?page={{ contacts.previous_page_number }}">上一页</a>
{% else %}
<a class="prev"><<第一页</a>
{% endif %}
<span class="current">第{{ contacts.number }}页/共{{ contacts.paginator.num_pages }}页</span>
{% if contacts.has_next %}
<a class="next" href="?page={{ contacts.next_page_number }}">下一页</a>
<a class="next" href="?page={{ contacts.paginator.num_pages }}">>></a></div>
{% else %}
<a class="next-off">最后页>></a>
{% endif %}
</div>
</div>
2、搜索的分页
在进行搜索时,下一页时因为是新的页面,所以搜索参数并没有传到新的页面,导致结果没回传,所以我们需要一个方法来传递搜索参数。
代码如下:vim views.py
def property_list(request):
# 接受get参数
userid = request.GET.get('userid')
name = request.GET.get('name')
prodsn = request.GET.get('prodsn')
search = {}
getmathod = ''
if userid:
# 模糊搜索
search['user_id__icontains'] = userid
# 搜索参数的保存传递
getmathod += ('&userid=%s' % userid)
if name:
search['name__icontains'] = name
getmathod += ('&name=%s' % name)
if prodsn:
search['s_sn__icontains'] = prodsn
getmathod += ('&prodsn=%s' % prodsn)
messages = models.ProdDetail.objects.filter(**search)
limit = 25
paginator = Paginator(messages, limit) # 按每页25条分页
page = request.GET.get('page', '1') # 默认跳转到第一页
result = paginator.page(page)
# 将原来的get请求封装后返回给前端
return render(request, 'lists.html', {'contacts': result, 'getmathod': getmathod})
- 将getmathod传递给前端,加在page href后:=={{ getmathod }}==
vim lists.html
{% if contacts.has_previous %}
<a class="prev" href="?page=1{{ getmathod }}"><<</a>
<a class="prev" href="?page={{ contacts.previous_page_number }}{{ getmathod }}">上一页</a>
{% else %}
<a class="prev"><<第一页</a>
{% endif %}
<span class="current">第{{ contacts.number }}页/共{{ contacts.paginator.num_pages }}页</span>
{% if contacts.has_next %}
<a class="next" href="?page={{ contacts.next_page_number }}{{ getmathod }}">下一页</a>
<a class="next" href="?page={{ contacts.paginator.num_pages }}{{ getmathod }}">>></a></div>
{% else %}
<a class="next-off">最后页>></a>
{% endif %}
评论 (0)