xone

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

 

不带每页内容数量选择

django视图模块

class Page(object):
    def __init__(self,current_page,data_count,per_page_count=10,page_num = 7):
        self.current_page=current_page
        self.data_count = data_count
        self.per_page_count = per_page_count
        self.page_num = page_num

    def start(self):
        return (self.current_page -1)*self.per_page_count

    def end(self):
        return self.current_page*self.per_page_count

    @property
    def total_page(self):
        count, yu = divmod(len(li), self.per_page_count)

        if yu:
            count = count + 1
        return count

    def page_str(self):
        page_list = []

        if self.total_page < self.page_num:
            start_index = 1
            end_index = self.total_page + 1
        else:
            if self.current_page <= (self.page_num + 1) / 2:
                start_index = 1
                end_index = self.page_num + 1

            else:
                start_index = self.current_page - (self.page_num) / 2
                end_index = self.current_page + (self.page_num + 1) / 2
                if (self.current_page + (self.page_num - 1) / 2) > self.total_page:
                    end_index = self.total_page
                    start_index = self.total_page -self.page_num + 1

        if self.current_page == 1:
            prev = '''<a class='active' href="javascript:void(0);">上一页</a>'''
        else:
            prev = '''<a class='active' href="/user_list/?p=%s">上一页</a>''' % (self.current_page - 1)
        page_list.append(prev)
        for i in range(int(start_index), int(end_index) + 1):
            if i == self.current_page:

                temp = '''<a class='active' href="/user_list/?p=%s">%s</a>''' % (i, i)
            else:
                temp = '''<a class='normal' href="/user_list/?p=%s">%s</a>''' % (i, i)
            page_list.append(temp)
        if self.current_page == self.total_page:
            prev = '''<a class='active' href="javascript:void(0);">下一页</a>'''
        else:
            prev = '''<a class='active' href="/user_list/?p=%s">下一页</a>''' % (self.current_page + 1)
        page_list.append(prev)

        jump = """
        <input type='text' id="i2"/><a id='i1' onclick='jumpTo(this,"/user_list/?p=");'>GO</a>
        <script>
            function jumpTo(ths,base){
                var val = ths.previousSibling.value;
                location.href = base + val;
            }
        </script>
        """

        page_list.append(jump)

        page_list = ''.join(page_list)

        return page_list


li = []
for i in range(98):
    li.append(i)

def user_list(request):
    current_page = request.GET.get('p',1)
    current_page=int(current_page)

    page_obj = Page(current_page,len(li))
    data = li[page_obj.start():page_obj.end()]

    return render(request,'user_list.html',{'li':data,'page':mark_safe(page_obj.page_str())})

 

user_list.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .active{
            padding: 3px;
            margin: 10px;
            background-color: #28bfba;
        }
        .normal{
            padding: 3px;
            margin: 10px;
            background-color: #ebebeb;
        }

    </style>

</head>
<body>

    <ul>
        {% for item in li %}
            {% include 'li.html' %}
        {% endfor %}
    </ul>
    <div>
        {{ page }}
    </div>


</body>
</html>

 

li.html

<li>{{ item }}</li>

 

 

利用cookie做每页内容数量选择

视图函数

class Page(object):
    def __init__(self,current_page,data_count,per_page_count=10,page_num = 7):
        self.current_page=current_page
        self.data_count = data_count
        self.per_page_count = per_page_count
        self.page_num = page_num

    def start(self):
        return (self.current_page -1)*self.per_page_count

    def end(self):
        return self.current_page*self.per_page_count

    @property
    def total_page(self):
        count, yu = divmod(len(li), self.per_page_count)

        if yu:
            count = count + 1
        return count

    def page_str(self):
        page_list = []

        if self.total_page < self.page_num:
            start_index = 1
            end_index = self.total_page + 1
        else:
            if self.current_page <= (self.page_num + 1) / 2:
                start_index = 1
                end_index = self.page_num + 1

            else:
                start_index = self.current_page - (self.page_num) / 2
                end_index = self.current_page + (self.page_num + 1) / 2
                if (self.current_page + (self.page_num - 1) / 2) > self.total_page:
                    end_index = self.total_page
                    start_index = self.total_page -self.page_num + 1

        if self.current_page == 1:
            prev = '''<a class='active' href="javascript:void(0);">上一页</a>'''
        else:
            prev = '''<a class='active' href="/user_list/?p=%s">上一页</a>''' % (self.current_page - 1)
        page_list.append(prev)
        for i in range(int(start_index), int(end_index) + 1):
            if i == self.current_page:

                temp = '''<a class='active' href="/user_list/?p=%s">%s</a>''' % (i, i)
            else:
                temp = '''<a class='normal' href="/user_list/?p=%s">%s</a>''' % (i, i)
            page_list.append(temp)
        if self.current_page == self.total_page:
            prev = '''<a class='active' href="javascript:void(0);">下一页</a>'''
        else:
            prev = '''<a class='active' href="/user_list/?p=%s">下一页</a>''' % (self.current_page + 1)
        page_list.append(prev)

        jump = """
        <input type='text' id="i2"/><a id='i1' onclick='jumpTo(this,"/user_list/?p=");'>GO</a>
        <script>
            function jumpTo(ths,base){
                var val = ths.previousSibling.value;
                location.href = base + val;
            }
        </script>
        """

        page_list.append(jump)

        page_list = ''.join(page_list)

        return page_list


li = []
for i in range(98):
    li.append(i)

def user_list(request):
    current_page = request.GET.get('p',1)
    current_page=int(current_page)
    val = request.COOKIES.get('pgcount',10)
    print(val)
    val=int(val)

    page_obj = Page(current_page,len(li),val)
    data = li[page_obj.start():page_obj.end()]

    return render(request,'user_list.html',{'li':data,'page':mark_safe(page_obj.page_str())})

 

 

user_list.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .active{
            padding: 3px;
            margin: 10px;
            background-color: #28bfba;
        }
        .normal{
            padding: 3px;
            margin: 10px;
            background-color: #ebebeb;
        }

    </style>

</head>
<body>

    <ul>
        {% for item in li %}
            {% include 'li.html' %}
        {% endfor %}
    </ul>

    <select id="i1" onchange="changePage(this)">
        <option value="10">10</option>
        <option value="30">30</option>
        <option value="50">50</option>
    </select>

    <div>
        {{ page }}
    </div>
    <script src="/static/jquery-1.12.4.js"></script>
    <script src="/static/jquery.cookie.js"></script>
    <script>

        $(function () {
            var val = $.cookie('pgcount');
            $('#i1').val(val);
        });


        function changePage(ths) {
            var val =$(ths).val();
            console.log(val);
            $.cookie('pgcount',val);
            location.reload();
        }
        
    </script>

</body>
</html>

 

 

li.html

<li>{{ item }}</li>

 

posted on 2017-04-14 15:57  周小百  阅读(239)  评论(0)    收藏  举报