• 2019.03.20 mvt,Django分页


    MVT模式

        MVT各部分的功能:

      M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理。
       
      V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回响应。
       
      T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html。






     Django分页

    from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage


    def page_view(request):
    num = request.GET.get('num',1)
    num = int(num)

    movies = Movie.objects.all()
    paginator = Paginator(movies,20)

    try:
    t_per_page = paginator.page(num)#获取当前页码的记录
    except PageNotAnInteger:#如果用户输入的页码不是整数时,显示第1页的内容
    t_per_page = paginator.page(1)
    except EmptyPage:#如果用户输入的页数不在系统的页码列表中时,显示最后一页的内容
    t_per_page = paginator.page(paginator.num_pages)

    #每页开始页码
    begin = (num-int(math.ceil(10.0/2)))
    if begin<1:
    begin = 1

    # 每页结束页码
    end = begin+9
    if end >pager.num_pages:
    end = pager.num_pages

    if end <=10:
    begin = 1
    else:
    begin = end -9

    pagelist = range(begin,end+1)

    return render(request,'movie2.html',{'paginator':paginator,'t_per_page':t_per_page,'pagelist':pagelist})

    <div id="pagebar">
    {% if t_per_page.has_previous %}
    <a href="/movie/page/?num={{ t_per_page.previous_page_number }}">上一页</a>
    {% endif %}
    {% for n in paginator.page_range %}
    {% if n <= 10 %}
    <a href="/movie/page/?num={{ n }}">{{ n }}</a>
    {% endif %}


    {% endfor %}

    {% if t_per_page.has_next %}
    <a href="/movie/page/?num={{ t_per_page.next_page_number }}">下一页</a>
    {% endif %}

  • 相关阅读:
    抖动代码
    WSAWaitForMultipleEvents()
    udp 不需要 listen
    WSAEventSelect
    C++ Win32控制台应用程序捕捉关闭事件
    玩转Win32开发(2):完整的开发流程
    win32线程池代码(WinApi/C++)
    又线程类封装
    Win2 Socket(套接字)相关 API
    Win32函数Sleep的精度测试
  • 原文地址:https://www.cnblogs.com/Py-king/p/10568058.html
Copyright © 2020-2023  润新知