zoukankan      html  css  js  c++  java
  • 六、django分面、获取请求参数

    一、获取请求参数

    def index(request):
        limit = request.GET.get('limit',20) #get请求获取请求参数
        page = request.GET.get('page',1)
        username = request.POST.get('name','nana') #post请求获取请求参数

    二、分页的方法

    from django.core.paginator import Paginator  #实现分页的类
    
    l = list(range(100)) #定义一个list作为分页的数据
    page_obj = Paginator(l,20) #第一个参数,对谁进行分页,第二个参数,一页多少个
    
    print(page_obj.count)# 总共多少条数据
    print(list(page_obj.get_page(2)))#获取第1页的数据
    print(page_obj.object_list)#page_obj原始的数据
    print(page_obj.num_pages)#总共分了几页
    print(page_obj.page_range)#分页范围  range(1, 6)
    
    page1 = page_obj.get_page(1)
    re = page1.has_next()#是否有下一页
    re = page1.has_other_pages()#是否有其他的页
    re = page1.has_previous()#是否有上一页
    re = page1.next_page_number()#下一页的页码,如果没有则报错
    re = page1.previous_page_number()#上一页的页码
    re = page1.end_index()#这一页最后一个元素的脚标
    re = page1.start_index()#这一页第一个元素的脚标
    re = page1.paginator#获取分页的对象
    re = page1.number #当前的页码
    
    print(re)

    三、实现分页

    分页的后端实现:

    def index(request):
        limit = request.GET.get('limit',page_limit)#从请求中获取limit,默认值为page_limit
       #page_limit定义为一个变量,写进上下文管理器
    page = request.GET.get('page',1)#从请求中获取page,默认值为1 articles = models.Article.objects.filter(is_delete=1)#从数据库中取到文章表的内容 page_obj = Paginator(articles, limit)#得到文章的对象,按照传过来的limit决定一页多少文章 page_data = page_obj.get_page(page)#得到具体页面的内容,比如page传入3就获取第三页的内容 dic = {'articles' : page_data}#传到页面上的数据已经根据页码显示 return render(request, 'index.html', dic)

     分页的前端实现:

    {% block pagination %}     分页的块代码
        {% if articles.has_other_pages %}   {# 判断是否有其它页 #}
            <div>
                <ul class="pagination">
                    <li><a href="/index/?limit={{ page_limit }}&page=1">首页</a></li>
                    {# page=1,首页 #}
                    {% if articles.has_previous %} {# 判断是否有上一页 #}
                        <li><a href="/index/?limit={{ page_limit }}&page={{ articles.previous_page_number }}">«</a></li>
                        {% else %}
                        <li><a href="#">«</a></li>
                    {% endif %}
                    {% for num in articles.paginator.page_range %}
                        {% if articles.number == num %}
                            <li><a class='active' href="/index/?limit={{ page_limit }}&page={{ num }}">{{ num }}</a></li>
                        {% else %}
                            <li><a href="/index/?limit={{ page_limit }}&page={{ num }}">{{ num }}</a></li>
                        {% endif %}
                    {% endfor %}
                    {#            <li><a class="active" href="#">2</a></li>#}
                    {% if articles.has_next %} {# 判断是否有下一页 #}
                        <li><a href="/index/?limit={{ page_limit }}&page={{ articles.next_page_number }}">»</a></li>
                        {# 根据articles.paginator获取分页的对象,再用num_pages函数取到页码 #}
                        <li><a href="/index/?limit={{ page_limit }}&page={{ articles.paginator.num_pages }}">尾页</a></li>
                        {% else %}
                        <li><a href="#">»</a></li>
                        <li><a href="#">尾页</a></li>
                    {% endif %}
                </ul>
            </div>
        {% endif %}
    {% endblock %}
  • 相关阅读:
    Codeforces 798C. Mike and gcd problem 模拟构造 数组gcd大于1
    Codeforces 796C. Bank Hacking
    Codeforces 792B. Counting-out Rhyme
    gym 101164 H.Pub crawl 凸包
    hdu 6053 TrickGCD 筛法
    hdu 6041 I Curse Myself 无向图找环+优先队列
    bzoj 2243: [SDOI2011]染色 线段树区间合并+树链剖分
    codeforces gym 101164 K Cutting 字符串hash
    树链剖分求lca
    UESTC 1697 简单GCD问题(一) 筛法
  • 原文地址:https://www.cnblogs.com/yanyan-/p/11742982.html
Copyright © 2011-2022 走看看