Django 我有一个搜索函数,它可以呈现另一个带有搜索结果的页面,我在这个函数中实现了分页,但它显示了一个错误
我有一个名为“命名搜索\用户”的视图函数,当我键入要搜索的内容时,它会显示结果,但当我在搜索后单击下一页时,它会显示valueerror(例如,返回none) views.pyDjango 我有一个搜索函数,它可以呈现另一个带有搜索结果的页面,我在这个函数中实现了分页,但它显示了一个错误,django,pagination,Django,Pagination,我有一个名为“命名搜索\用户”的视图函数,当我键入要搜索的内容时,它会显示结果,但当我在搜索后单击下一页时,它会显示valueerror(例如,返回none) views.py def search_user(request): query = request.GET.get("q") context ={} if query: users = User.objects.filter(Q(username__icontains=quer
def search_user(request):
query = request.GET.get("q")
context ={}
if query:
users = User.objects.filter(Q(username__icontains=query))
if users:
page = request.GET.get('page', 1)
paginator = Paginator(users, 1)
try:
users = paginator.page(page)
except PageNotAnInteger:
users = paginator.page(1)
except EmptyPage:
users = paginator.page(paginator.num_pages)
context={'users': users}
return render(request,'user/search.html',context)
else:
messages.warning(request,'User matching query does not exist.')
return redirect('acc_req_list')
形式
搜寻
search.html
{% if users.has_other_pages %}
<ul class="pagination">
{% if users.has_previous %}
<li class="page-item active">
<a class="page-link" href="?page={{ users.previous_page_number }}">pre</a>
</li>
{% else %}
<li class="page-item disabled"><span></span></li>
{% endif %}
{% for i in users.paginator.page_range %}
{% if users.number == i %}
<li class="page-item"><span style="z-index: 1; position: relative; display: block;padding: 0.5rem 0.75rem; margin-left: -1px; line-height: 1.25; color: #f7efef; background-color: #F64E60; border: 1px solid #E4E6EF;">{{ i }} <span class="sr-only" >(current)</span></span></li>
{% else %}
<li class="page-item"><a class="page-link" href="?page={{ i }}">{{ i }}</a></li>
{% endif %}
{% endfor %}
{% if users.has_next %}
<li class="page-item active">
<a class="page-link" href="?page={{ users.next_page_number }}">Next</a>
</li>
{% else %}
<li class="page-item disabled"><span></span></li>
{% endif %}
</ul>
{% endif %}
{%if users.has_other_pages%}
{%if users.has_previous%}
-
{%else%}
{%endif%}
{users.paginator.page_range%}
{%if users.number==i%}
- {{i}(当前)
{%else%}
{%endif%}
{%endfor%}
{%if users.has_next%}
-
{%else%}
{%endif%}
{%endif%}
如果query==False,则返回内容:
def search_user(request):
query = request.GET.get("q")
context ={}
if query:
users = User.objects.filter(Q(username__icontains=query))
if users:
page = request.GET.get('page', 1)
paginator = Paginator(users, 1)
try:
users = paginator.page(page)
except PageNotAnInteger:
users = paginator.page(1)
except EmptyPage:
users = paginator.page(paginator.num_pages)
context={'users': users}
return render(request,'user/search.html',context)
else:
messages.warning(request,'User matching query does not exist.')
return redirect('acc_req_list')
else:
return redirect('URL')
更新:
search.html:
def search_user(request):
query = request.GET.get("q")
context ={}
if query:
users = User.objects.filter(Q(username__icontains=query))
if users:
page = request.GET.get('page', 1)
paginator = Paginator(users, 1)
try:
users = paginator.page(page)
except PageNotAnInteger:
users = paginator.page(1)
except EmptyPage:
users = paginator.page(paginator.num_pages)
context={'users': users}
return render(request,'user/search.html',context)
else:
messages.warning(request,'User matching query does not exist.')
return redirect('acc_req_list')
else:
return redirect('URL')
Passq={{request.GET.q}
{% if users.has_other_pages %}
<ul class="pagination">
{% if users.has_previous %}
<li class="page-item active">
➡➡➡➡<a class="page-link" href="?page={{ users.previous_page_number }}&q={{ request.GET.q }}">pre</a>
</li>
{% else %}
<li class="page-item disabled"><span></span></li>
{% endif %}
{% for i in users.paginator.page_range %}
{% if users.number == i %}
<li class="page-item"><span style="z-index: 1; position: relative; display: block;padding: 0.5rem 0.75rem; margin-left: -1px; line-height: 1.25; color: #f7efef; background-color: #F64E60; border: 1px solid #E4E6EF;">{{ i }} <span class="sr-only" >(current)</span></span></li>
{% else %}
➡➡➡➡<li class="page-item"><a class="page-link" href="?page={{ i }}&q={{ request.GET.q }}">{{ i }}</a></li>
{% endif %}
{% endfor %}
{% if users.has_next %}
<li class="page-item active">
➡➡➡➡<a class="page-link" href="?page={{ users.next_page_number }}&q={{ request.GET.q }}">Next</a>
</li>
{% else %}
<li class="page-item disabled"><span></span></li>
{% endif %}
</ul>
{% endif %}
{%if users.has_other_pages%}
{%if users.has_previous%}
-
➡➡➡➡
{%else%}
{%endif%}
{users.paginator.page_range%}
{%if users.number==i%}
- {{i}(当前)
{%else%}
➡➡➡➡
{%endif%}
{%endfor%}
{%if users.has_next%}
-
➡➡➡➡
{%else%}
{%endif%}
{%endif%}
如果查询:计算结果为False
,您还没有返回任何case中的响应。请您解释一下如果查询计算结果为False,逻辑会是什么。但是如果我重定向到其他url,我将如何进行分页。我需要从该结果页面进行分页Hello@ZahidHassan plz查看我的更新答案。这很有效太好了。非常感谢你。你是老板。你太棒了,我爱你,但你能解释一下你是如何得到这种逻辑的吗?非常欢迎@ZahidHassan。当您按<代码>下< /COD>或<代码>以前< /代码>链接时,您过去的查询PAR。他走了。所以我思考如何保持过去的代码>获取< /Cord>查询PAR。然后我把这个应用到我的upd上。回答我过去的项目和它的工作…好的,好的,谢谢你的人。:)