class ArticleListView(ListView):
model = Article
template_name = 'article_list.html'
paginate_by = 20
context_object_name = 'articles'
ordering = 'create_time'
page_kwarg = 'p'
def get_context_data(self,**kwargs):
#要获取上下文的数据 需要继承于父类
context = super(ArticleListView,self).get_context_data(*kwargs)
print("="*30)
print(context)
print("=" * 30)
paginator = context.get('paginator') #获取context中的 paginator
print(paginator.count) #151条数据
print(paginator.num_pages) #8 分 8页
print(paginator.page_range) #range(1, 9) 包含第一页 不包含第九页
Paginator常用属性和方法:
count:总共有多少条数据。
num_pages:总共有多少页。
page_range:页面的区间。比如有三页,那么就range(1,4)。
class ArticleListView(ListView):
model = Article
template_name = 'article_list.html'
paginate_by = 20
context_object_name = 'articles'
ordering = 'create_time'
page_kwarg = 'p'
def get_context_data(self,**kwargs):
#要获取上下文的数据 需要继承于父类
context = super(ArticleListView,self).get_context_data(*kwargs)
page_obj = context.get('page_obj') 从 context 中 获取 page_obj
#http://127.0.0.1:9000/article/list/?p=7
print(page_obj.has_next()) 是否还有下一页 True
print(page_obj.has_previous()) 是否还有上一页 True
print(page_obj.next_page_number()) 下一页的页码 8
Page常用属性和方法:
has_next:是否还有下一页。
has_previous:是否还有上一页。
next_page_number:下一页的页码。
previous_page_number:上一页的页码。
number:当前页。
start_index:当前这一页的第一条数据的索引值。
end_index:当前这一页的最后一条数据的索引值。
html外链
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
<table border="1" cellpadding="1" cellspacing="0">
<tr>
<th>序号</th>
<th>标题</th>
<th>内容</th>
<th>创建时间</th>
</tr>
{% for article in articles %}
<tr>
<td>{{ article.id }}</td>
<td>{{ article.title }}</td>
<td>{{ article.context }}</td>
<td>{{ article.create_time }}</td>
</tr>
{% endfor %}
</table>
<nav aria-label="Page navigation ">
<ul class="pagination ">
{% if page_obj.has_previous %}
<li><a href="{% url 'article_list' %}?page={{ page_obj.previous_page_number }}">上一页</a></li>
{% else %}
<li><a href="javascript:void(0)">上一页</a></li>
{% endif %}
{# 中间的页码#}
{% for page in paginator.page_range %}
{% if page == page_obj.number %}
<li class="active"><a href="javascript:void(0)">{{ page }}</a></li>
{% else %}
<li><a href="{% url 'article_list' %}?page={{ page }}">{{ page }}</a></li>
{% endif %}
{% endfor %}
{% if page_obj.has_next %}
<li><a href="{% url 'article_list' %}?page={{ page_obj.next_page_number }}">下一页</a></li>
{% else %}
<li><a href="javascript:void(0)">下一页</a></li>
{% endif %}
</ul>
</nav>
</body>
</html>