django实现一个模糊查询以及分页
时间: 2024-01-01 18:03:13 浏览: 47
实现模糊查询和分页功能需要用到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>
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)