django实现搜索后分页问题

由于django提供了paginator模块,直接调用就行
如:from django.core.paginator import Paginator

但是django实现搜索后分页,只会显示第一页,其他页都无法正确显示。
后知道,django的请求分页是GET模式,而且需要在a标签里传递我们的搜索内容。
代码:

   <nav aria-label="Page navigation">
                <ul class="pagination">
                    <li >
                      {% if current_page.has_previous %}
                          <a href="/cpname_detail/?page={
  { current_page.previous_page_number  }}**&cpname={
  {name}}**" aria-label="Previous" >
                            <span aria-hidden="true" >&laquo;</span>
                          </a>
                        {% endif %}
                    </li>
                    {% for page_num in page_range %}
                        {% if page_num == current_num %}
                         
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现模糊查询和分页功能需要用到Django的ORM和Paginator模块。 模糊查询: 1. 在views.py中定义视图函数,接收用户输入的查询关键字,并使用icontains进行模糊匹配。 ```python from django.core.paginator import Paginator from django.shortcuts import render from .models import Book def book_search(request): keyword = request.GET.get('keyword') books = Book.objects.filter(name__icontains=keyword) return render(request, 'book_search.html', {'books': books}) ``` 2. 在模板中使用表单接收用户输入的关键字,展示查询结果。 ```html <form method="get" action="{% url 'book_search' %}"> <input type="text" name="keyword"> <button type="submit">搜索</button> </form> {% if books %} <ul> {% for book in books %} <li>{{ book.name }}</li> {% endfor %} </ul> {% else %} <p>暂无结果</p> {% endif %} ``` 分页: 1. 在views.py中定义视图函数,使用Paginator将查询结果分页。 ```python def book_list(request): books = Book.objects.all() paginator = Paginator(books, 10) page_number = request.GET.get('page') page_obj = paginator.get_page(page_number) return render(request, 'book_list.html', {'page_obj': page_obj}) ``` 2. 在模板中展示分页导航和当前页的数据。 ```html <ul> {% for book in page_obj %} <li>{{ book.name }}</li> {% endfor %} </ul> <div> {% if page_obj.has_previous %} <a href="?page={{ page_obj.previous_page_number }}">上一页</a> {% endif %} <span>{{ page_obj.number }}</span> {% if page_obj.has_next %} <a href="?page={{ page_obj.next_page_number }}">下一页</a> {% endif %} </div> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值