django实战(一)--dango自带的分页(极简)

django实战(一)--dango自带的分页(极简),第1张

概述分页

注意,我将templates定义在项目的同级目录下:

在settings.py中配置

TEMPLATES = [    {        'BACKEND': django.template.backends.django.DjangoTemplates','Dirs': [os.path.join(BASE_DIR,'templates')],APP_Dirs: True,OPTIONS: {            context_processors: [                django.template.context_processors.deBUGdjango.template.context_processors.requestdjango.contrib.auth.context_processors.authdjango.contrib.messages.context_processors.messages

urls.py

from django.urls import pathfrom .  vIEwsapp_name=personurlpatterns=[    path(test/test/<int:pn>',vIEws.test,name=test),]

vIEws.py

from django.shortcuts  renderfrom .models  Bookfrom django.core.paginator   Paginatordef test(request,pn=1):    #获取所有的查询    book_obj=Book.objects.all()    传给paginator,每页显示两条    paginator=Paginator(book_obj,2)    pn是显示第几页,默认是第一页    page=paginator.page(pn)    将page通过context传给前端    context={page:page}    return render(request,test/test.HTMLclass Book(models.Model):    ID = models.autoFIEld(primary_key=True)    Title = models.CharFIEld(max_length=128,null=False)    def __str__(self):        return "book_Title:{}".format(self.Title)    

 

 tempates/test/test.HTML

<!DOCTYPE HTML><HTML lang=en"><head>    <Meta charset=UTF-8">    <Meta name=vIEwport"          content=wIDth=device-wIDth,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0">    <Meta http-equiv=X-UA-Compatible" content=IE=edge">    <Title>document</Title>    <style>        li{            float: left;            List-style: none;            margin-left: 5px;        }    </style></head><body><div>    <div style=position: absolute;top: 35%;left: 40%;">        <table border=1">            <thread>                <tr>                    <th>ID</th>                    <th>Title</th>                </tr>            </thread>            <tbody>            {% for item in page %}                <tr>                    <td wIDth=120px">{{item.ID}}</td>                    <td wIDth=">{{item.Title}}</td>                </tr>            {% endfor %}            </tbody>        </table>    </div><!--底部分页按钮显示--><div style=position: absolute;top: 50%;left: 44%"    <nav aria-label=Page navigation">        <div class=pagination">            <ul " >if page.has_prevIoUs %}                <li><a href="/test/{{page.prevIoUs_page_number}}"   aria-label=PrevIoUs">                    <span aria-hIDden=true">&laquo;</span></a></li>            {% endif %}            {% for num in page.paginator.page_range%}                {%if pindex == page.number%}                    <li><a href="">{{ num }}</a></li>                {%else%"/test/{{num}}">{{ num }}</a></li>                {%endif%}             {% endfor %}             {% if page.has_next %}                 <li><a href="{% url 'person:test' page.next_page_number %}" aria-label=Next">                      <span aria-hIDden=">&raquo;</span></a></li>              {% endif %}            </ul>        </div>    </nav></div></body></HTML>

最终效果(不要在意CSS,不大美观,哈哈)

 

 在显示下网页源代码:

<!DOCTYPE HTML><HTML lang=">            <thread>                <tr>                    <th>ID</th>                    <th>Title</th>                </tr>            </thread>            <tbody>                            <tr>                    <td wIDth=">3</td>                    <td wIDth=">java</td>                </tr>                            <tr>                    <td wIDth=">6</td>                    <td wIDth=">zabbix从入门到精通</td>                </tr>                        </tbody>        </table>    </div><!--底部分页按钮显示--><div style=" >                            <li><a href=/test/1"   aria-label=">&laquo;</span></a></li>                <li><a href=">1</a></li>                               <li><a href=/test/2">2</a></li>                            <li><a href=/test/3">3</a></li>                 <li><a href=" aria-label=">&raquo;</span></a></li>                          </ul>        </div>    </nav></div></body></HTML>

总结:这是实现分页最简单的了,至于美观,可以结合bootstrap来进行美化。

技术总结:最基本的是Paginator里面的一些值(当然此处我并没有去尝试其他的,有兴趣的可以去搜下,也挺简单的)。然后其中的一个就是前端pn值如何通过url传值给后端,注意标蓝的地方。

学习不易,且学且珍惜!!!

总结

以上是内存溢出为你收集整理的django实战(一)--dango自带的分页(极简)全部内容,希望文章能够帮你解决django实战(一)--dango自带的分页(极简)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1214388.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存