加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 17:08:07 所属栏目:大数据 来源:网络整理
导读:注意,我将templates定义在项目的同级目录下: 在settings.py中配置 TEMPLATES = [ { ' BACKEND ' : django.template.backends.django.DjangoTemplates ' , 'DIRS': [os.path.join(BASE_DIR,'templates')], APP_DIRS : True, OPTIONS : { context_processors

注意,我将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 path
from .  views

app_name=person
urlpatterns=[
    path(test/test/<int:pn>',views.test,name=test),]

views.py

from django.shortcuts  render
from .models  Book
from django.core.paginator   Paginator

def 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.html
class 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传值给后端,注意标蓝的地方。

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读