github address:
https://github.com/jamespacileo/django-pure-pagination
Download third-party packages:
pip install django-pure-pagination
Configure in settings:
INSTALLED_APPS:
'pure_pagination'
sttings:
#分页相关设置
PAGINATION_SETTINGS = {
# 当数据多起来的时候省略号中间显示几页连续的
'PAGE_RANGE_DISPLAYED': 10,
# 当数据多起来的时候省略号前后面显示几页连续的
'MARGIN_PAGES_DISPLAYED': 2,
#页数多起来的时候第一页的链接是否显示来
'SHOW_FIRST_PAGE_WHEN_INVALID': True,
}
The front and back ends are not separated:
view:
Example:
class OrgListView(View):
def get(self,request,*args,**kwargs):
#查询所有机构
all_orgs=CourseOrg.objects.all()
# 统计有多少家机构
org_nums=CourseOrg.objects.count()
#查询机构的全部地区
all_citys=City.objects.all()
#分页
try:
page = request.GET.get('page', 1)
except PageNotAnInteger:
page = 1
#per_page 每页显示多少数据,all_orgs:要分页的数据
p = Paginator(all_orgs,per_page=5, request=request)
orgs = p.page(page)
return render(request,"html/org-list.html",{
"all_orgs":orgs,
"org_nums":org_nums,
"all_citys":all_citys,
})
front end:
<div class="pageturn">
<ul class="pagelist">
{
% if all_orgs.has_previous %}
<li class="long"><a href="?{
{ all_orgs.previous_page_number.querystring }}">上一页</a></li>
{
% endif %}
{
% for page in all_orgs.pages %}
{
% if page %}
{
% ifequal page all_orgs.number %}
<li class="active"><a href="?{
{ page.querystring }}">{
{
page }}</a></li>
{
% else %}
<li><a href="?{
{ page.querystring }}" class="page">{
{
page }}</a></li>
{
% endifequal %}
{
% else %}
<li class="none">...</li>
{
% endif %}
{
% endfor %}
{
% if all_orgs.has_next %}
<li class="long"><a href="?{
{ all_orgs.next_page_number.querystring }}">下一页</a></li>
{
% endif %}
</ul>
</div>