django samesite,Django
学习笔记,仅供参考。
文章页面制作的第一步、第二步、第三步
制作分页
现在,我们以博客中的mywebsite_bookstore项目为例,对图书展示界面进行分页。
第一步
对于图书展示界面中的35条图书记录,以每页10条记录为分页标准,在页面底部显示页面跳转超链接。
在模板文件中,我们创建了一个新的模板book.html:
!声明文档类型
html lang=en
头
meta charset=UTF-8
标题列表/标题
/头
身体
A href=/bookstore/进入书库/a nbsp。
A href=/返回主页/a
桌子
tr
第个标题/第个
Th出版社/th
Th定价/th
Th零售价/th
Th修改/th
删除/th
/tr
{% for abook in page %}
tr
td {{ abook.title }} /td
td {{ abook.pub_house }} /td
td {{ abook.price }} /td
td {{ abook.market_price }} /td
{% if request.session.userinfo %}
TD href=/book store/mod/{ { abook . title } } modify/a/TD
TD href=/book store/del/{ { abook . title } } Delete/a/TD
{% else %}
Tdspan= 2 您无权更改/td。
{% endif %}
/tr
{% endfor %}
/表格
{ % for page _ num in paginator . page _ range % }
a href={% url book %}?page={ { page _ num } } page { { page _ num } }/a
{% endfor %}
/body
/html
在书店应用程序下的视图模块views.py中创建视图函数book_page:
def book_page(请求):
bks=型号。Book.objects.all()
分页器=分页器(bks,10)
Print(对象总数为:,paginator.count)
打印(面码范围为:,paginator.page_range)
#例如:range(1,5)表示我们总共有4页。
打印(总页数为:,paginator.num_pages)
Print(每页最大数量:,paginator.per_page)
cur_page=请求。GET.get(page ,1)
#获取查询参数,默认为第1页。
page=paginator.page(cur_page)
返回render(request, book.html ,locals())
在书店应用程序下的urls.py模块中添加一个路由:
从django.urls导入re_path
从。导入视图
urlpatterns=[
re_path(r^$,views.homepage),
re_path(r^add/$,views.new_book),
re_path(r^list_all/$,views.list_books),
re_path(r^mod/(\w )/$ ,views.mod_book_info),
re_path(r^del/(\w )/$ ,views.del_book),
re_path(r^book,views.book_page,name=book ),
]
现在,我们向http://127 . 0 . 0 . 1:8000/书店/书提出请求:
可以看到页面上显示了10个图书信息项,页面底部出现了4个页面跳转的超链接。现在,让我们点击第四页:
如你所见,第四页只有五条图书信息。同时URL中出现查询参数页面,查询参数值为4。
第二步
在模板中添加一个判断,就是对于当前页面(比如当前页面在第2页),我们不添加跳转超链接(针对第2页)。
这里我们以百度为例:
我们修改book.html模板(仅显示超链接的代码部分):
{ % for page _ num in paginator . page _ range % }
{% if page_num==page.number %}
第{ {页码}}页
{% else %}
a href={% url book %}?page={ { page _ num } } page { { page _ num } }/a
{% endif %}
{% endfor %}我们向http://127 . 0 . 0 . 1:8000/书店/书:
您可以看到当前页面(第一页)没有超链接。
第三步
添加上一页和下一页功能。
我们修改book.html模板(仅显示超链接的代码部分):
{#分页功能#}
{#上一个函数#}
{% if page.has_previous %}
{#如果上一页返回True #}
a href={% url book %}?page={ { page . Previous _ page _ number } } 上一页/a
{#返回前一页的页码,如果前一页不存在,则抛出InvalidPage异常#}
{% else %}
上一页
{% endif %}
{ % for page _ num in paginator . page _ range % }
{% if page_num==page.number %}
第{ {页码}}页
{% else %}
a href={% url book %}?page={ { page _ num } } page { { page _ num } }/a
{% endif %}
{% endfor %}
{#下一页功能#}
{% if page.has_next %}
{#如果下一页返回True #}
a href={% url book %}?Page={{ page.next_page_number }} 下一页/a
{% else %}
下一页
{% endif %}
我们向http://127 . 0 . 0 . 1:8000/书店/书提出请求:
成功!
转载请联系作者获得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。