首页 > 解决方案 > Django分页表后所有页面的搜索框

问题描述

我使用 Django 开发了一个网络应用程序。

我创建了一个表格分页。如何为表的所有页面中的所有数据创建搜索输入?

视图.py

def Browse_and_adopt(request):
    Title_list = Title.objects.all()
    page = request.GET.get('page', 1)

    paginator = Paginator(Title_list, 10)
    try:
        Titles = paginator.page(page)
    except PageNotAnInteger:
        Titles = paginator.page(1)
    except EmptyPage:
        Titles = paginator.page(paginator.num_pages)



    page_obj = paginator.get_page(page)

    return render(request, 'bms/inbox/Browse_and_adopt.html', {'Titles': Titles, 'page_obj': page_obj})

Browse_and_adopt.html

          <table id="myTable">
                <thead>
                <tr>
                    <th>Title</th>
                                 </tr>
                </thead>
                <tbody>
                % for book in page_obj %}
                <tr>
                    <td>{{ book.title }}</td>
                                </tr>
                {% endfor %}
                </tbody>
            </table>
<div class="pagination">
    <span class="step-links">
        {% if page_obj.has_previous %}
            <a href="?page=1">&laquo; first</a>
            <a href="?page={{ page_obj.previous_page_number }}">previous</a>
        {% endif %}

        <span class="current">
            Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
        </span>

        {% if page_obj.has_next %}
            <a href="?page={{ page_obj.next_page_number }}">next</a>
            <a href="?page={{ page_obj.paginator.num_pages }}">last &raquo;</a>
        {% endif %}
    </span>
</div>
    

现在只显示第一页,如何为表中的所有数据创建搜索栏?

标签: javascriptdjangopagination

解决方案


视图不知道您要查找的对象。

有两种方法可以做到这一点。

在前端编写一个过滤所有提供的表数据的 JS 回调事件侦听器。“不是最优的”

或者您可以创建一个自定义视图,通过 post 请求接收对象 pk 并返回过滤结果,例如 url:


urlpatterns = [
    path('update/<int:pk>/', updateViewSet.as_view()),
]

推荐阅读