tornado&django --- 分页

tornadojavascript

1,urls.pycss

import config import os from views.view import IndexHadnler,SearchHadnler,SearchresHadnler class Application(tornado.web.Application): def __init__(self): heandlers = [ (r'/',IndexHadnler), (r'/search',SearchHadnler), (r'/search_res/(?P<page>\d*)',SearchresHadnler), # (r'/pay',PayHadnler)
 ] super(Application,self).__init__(heandlers,**config.settings,address='0.0.0.0')

2,实现分页功能及展现html

class Pagination: """ 分页 """
 
    def __init__(self, current_page='1', page_item=1): all_page, c = divmod(page_item, 5) if c > 0: all_page += 1
        try: current_page = int(current_page) except: current_page = 1
        if current_page < 1: current_page = 1 self.current_page = current_page  # 当前页
        self.all_page = all_page  # 总页数
 @property def start(self): """ 显示数据的起点索引 :return: """
        return (self.current_page - 1) * 5 @property def end(self): """ 显示数据的末尾索引 :return: """
        return self.current_page * 5
 
    def page_num_show(self, baseurl): """ 写入{% raw str_page %}模板中的内容 :param baseurl: 该段代码不只能够在/index/中使用,也能够在/home/等等页码使用, :return: 返回一段字符串形式的html代码块,包括首页,页码数,上一页等等内容 """
        # 计算9个页码的起始索引
        list_page = [] if self.current_page <= 4: s = 0 e = min(self.all_page, 9) elif self.current_page > self.all_page - 4: s = max(0, self.all_page - 9) e = self.all_page else: s = self.current_page - 5 e = self.current_page + 4
        # 首页
        first_page = '<a href="%s1">首页</a>' % (baseurl) list_page.append(first_page) # 上一页current_page-1
        if self.current_page <= 1: prev_page = '<a href="javascript:void(0);">上一页</a>'
        else: prev_page = '<a href="%s%s">上一页</a>' % (baseurl, self.current_page - 1) list_page.append(prev_page) #9个页码数
        for p in range(s, e): if p + 1 == self.current_page: temp = '<a href="%s%s" class="active">%s</a>' % (baseurl, p + 1, p + 1) list_page.append(temp) else: temp = '<a href="%s%s">%s</a>' % (baseurl, p + 1, p + 1) list_page.append(temp) # 下一页next_page+1
        if self.current_page >= self.all_page: next_page = '<a href="javascript:void(0);">下一页</a>'
        else: next_page = '<a href="%s%s">下一页</a>' % (baseurl, self.current_page + 1) list_page.append(next_page) # 尾页
        last_page = '<a href="%s%s">尾页</a>' % (baseurl, self.all_page) list_page.append(last_page) # # 页面跳转
        # jump = """<input type="text"/><a οnclick="Jump('%s',this);">go</a>""" % (baseurl,)
        # script = """<script>
        # function Jump(url,self){
        # var v=self.previousElementSibling.value;
        # if (v.trim().length>0){
        # location.href=url+v;
        # }
        # }
        # </script>"""
        # list_page.append(jump)
        # list_page.append(script)
 str_page = "".join(list_page) return str_page class SearchresHadnler(BaseHandler): async def get(self,page): page_obj = Pagination(page, len(info_res)) # 当前页显示的数据
        current_list = info_res[page_obj.start:page_obj.end] # 当前页显示的页码数相关html代码
        str_page = page_obj.page_num_show('/search_res/') self.render('info.html', info=current_list, current_page=page_obj.current_page, str_page=str_page)

 

3,info.html前端

<!DOCTYPE html>
<!-- <html lang="en"> -->
    <link rel="stylesheet" type="text/css" href="../static/top/gameadmin/libs/aui/css/aui.css" />
    <link rel="stylesheet" type="text/css" href="../static/top/gameadmin/libs/aui/css/bootstrap.min.css" />
    <link rel="stylesheet" type="text/css" href="../static/top/gameadmin/libs/aui/css/bootstrap-theme.min.css" /> 
    <link type="text/css" rel="stylesheet" href="../static/top/gameadmin/css/jquery.dataTables.min.css">
    <link href="../static/top/gameadmin/css/H-ui.min.css" rel="stylesheet" type="text/css" />
    <link href="../static/top/gameadmin/css/H-ui.admin.css" rel="stylesheet" type="text/css" />    
    <script src="../static/top/gameadmin/libs/jquery-1.12.1.min.js" ></script>
    <script src="../static/top/gameadmin/libs/bootstrap.min.js" ></script>
    <script src="../static/top/gameadmin/libs/axios.js" ></script>
    <script src="../static/top/gameadmin/libs/jquery.cookie.js" ></script>
    <script>
        var le = { language: { "sProcessing": "处理中...", "sLengthMenu": "显示 _MENU_ 项结果", "sZeroRecords": "没有匹配结果", "sInfo": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项", "sInfoEmpty": "显示第 0 至 0 项结果,共 0 项", "sInfoFiltered": "(由 _MAX_ 项结果过滤)", "sInfoPostFix": "", "sSearch": "搜索:", "sUrl": "", "sEmptyTable": "表中数据为空", "sLoadingRecords": "载入中...", "sInfoThousands": ",", "oPaginate": { "sFirst": "首页", "sPrevious": "上页", "sNext": "下页", "sLast": "末页" } } } </script>
<head>
    <!-- <meta charset="UTF-8"> -->
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <!-- <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/> -->
    <!-- <meta name="format-detection" content="telephone=no,email=no,date=no,address=no"> <meta http-equiv="pragma" content="no-cache" /> <meta http-equiv="cache-control" content="no-cache" /> <meta http-equiv="expires" content="0" /> -->
    <title>硕果电影</title>
    
    

</head>
<body>

<!-- <div class="aui-content aui-margin-b-15"> -->
    <section class="container-fluid page-404 minWP text-c" style="height: 20px;">
        <p class="error-title">
            <span class="va-m"> 电影列表</span>
        </p>
    </section>

    <div class="container" style="margin-top: 70px">
        <div class="row">
            <div class="col-md-10 col-md-offset-1">
                    <table id="dt" style="border:black 3px solid" class="table table-hover">
                        <thead><tr class="warning"><td>影片名称</td><td>影片类别</td><td>更新时间</td><td>播放</td></tr></thead>
                        <tbody> {% for i in info %} <tr>
                                <td>{{i['title']}}</td>
                                <td>{{i['typ']}}</td>
                                <td>{{i['update_time']}}</td>
                                <td> {%for j in i['info_url']%} <a href="{{j['url']}}">{{j['name']}}</a> {%end%} </td>
                            </tr> {%end%} </tbody>
                    </table>
                    <div class="page_num"> {% raw str_page %} </div>
           
            </div>
        </div>
    </div>
</div>
<script type="text/javascript" src="../static/top/gameadmin/js/jquery.dataTables.min.js" ></script>
<script type="text/javascript"> $(document).ready(function() { "bFilter": true, //过滤功能
 $("#dt").DataTable( // "bFilter": true,//过滤功能
        // 'bLengthChange': false,//改变每页显示数据数量
 le, ); }) </script>
</body>
</html>

效果以下:java

 

 

Djangojquery

1,前端ios

<nav aria-label="Page navigation">
                        <div class="pagination">
                            <ul class="pagination"> {% if books.has_previous %} <a class='active' href="?page={{ books.previous_page_number }}">上一页</a> {% endif %} <!-- {% for num in books.paginator.page_range%} {%if pindex == books.number%} <a href="">{{ num }}</a> {%else%} <a href="/books/borrow_show/{{num}}">{{ num }}</a> {%endif%} {% endfor %} -->
                            <span class="current"> 第{{ books.number }}页</span> {% if books.has_next %} <a class='active' href="?page={{ books.next_page_number }}">下一页</a> {% endif %} 共{{ books.paginator.num_pages }}页 </ul>
                        </div>
                    </nav>

2,后端web

from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage, InvalidPage class My_player(View): @method_decorator(check_login) def get(self,request): res = request.COOKIES.get("token") ret = Account.objects.filter(uuid=int(res)).first() result = Friendscircle.objects.filter(accountid=ret.id).first() #玩家信息 info = Friendscircleaccount.objects.filter(fcircleid=result.id).values('accountid') id_list = [] for i in info: if i['accountid'] != ret.id: id_list.append(i['accountid']) book_list = Account.objects.filter(id__in=id_list) paginator = Paginator(book_list, 5) page = request.GET.get('page') try: books = paginator.page(page) # todo: 注意捕获异常 except PageNotAnInteger: # 若是请求的页数不是整数, 返回第一页。 books = paginator.page(1) except InvalidPage: # 若是请求的页数不存在, 重定向页面 return HttpResponse('找不到页面的内容') except EmptyPage: # 若是请求的页数不在合法的页数范围内,返回结果的最后一页。 books = paginator.page(paginator.num_pages) return render(request,'myPlayer.html', {'books': books})

相关文章
相关标签/搜索