【发布时间】:2021-07-13 07:39:31
【问题描述】:
我有一个名为 search_user 的视图函数,当我键入要搜索的内容时,它会显示结果,但是当我在搜索后单击下一页时,它会显示 valueerror(例如,改为返回 none)
views.py
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')
表格
<form class="ml-5" action="{%url 'search_user'%}">
<div class="input-group input-group-sm input-group-solid" style="max-width: 175px">
<input type="text" class="form-control" name="q" placeholder="Search users..." value="{{ request.GET.q }}" required />
<div class="input-group-append">
<button class="btn btn-success" type="submit">Search</button>
</div>
</div>
</form>
搜索.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 query:评估为False,您还没有返回任何响应... -
您能否解释一下如果查询结果为 False 的逻辑是什么。
标签: django pagination