美文网首页
Django 分页

Django 分页

作者: 无处安放的躁动 | 来源:发表于2019-06-10 10:47 被阅读0次

Django 分页

view.py

@login_require
def tasklist(request):
    username = request.session.get("username", None)
    taskinfolist = tasks.objects.all()
    input_title = request.POST.get('title')
    input_username = request.POST.get('username')
    input_status = request.POST.get('status')
    input_search_field = None
    input_keyword = None
    # print(input_title,input_username,input_status)
    if request.method == "POST":
        input_search_field = request.POST.get("search_field")
        input_keyword = request.POST.get("keyword",None)
        print(input_search_field,input_keyword)
        if input_keyword != None:
            """标题检索"""
            if input_search_field == "title":
                taskinfolist = tasks.objects.all().filter(title__icontains=input_keyword)
            """作者检索"""
            if input_search_field == "username":
                taskinfolist = tasks.objects.all().filter(username=input_keyword)
            """状态检索"""
            if input_search_field == "status":
                status_code = choices_switch("GENDER_CHOICES1",input_keyword)
                taskinfolist = tasks.objects.all().filter(status=status_code )
            """类型检索"""
            if input_search_field == "tasktype":
                tasktype_code = choices_switch("GENDER_CHOICES",input_keyword)
                taskinfolist = tasks.objects.all().filter(tasktype=tasktype_code)

    tasklist_json = tag_tagcolor(taskinfolist)


    """"分页,把查询到的tasklist_json,我这转化为json,可不转"""
    # 值1:所有的数据
    # 值2:每一页的数据
    # 值3:当最后一页数据少于n条,将数据并入上一页
    paginator = Paginator(tasklist_json,10,3)
    try:
        # GET请求方式,get()获取指定Key值所对应的value值
        # 获取index的值,如果没有,则设置使用默认值1
        num = request.GET.get('index','1')
        # 获取第几页
        number = paginator.page(num)
    except PageNotAnInteger:
        # 如果输入的页码数不是整数,那么显示第一页数据
        number = paginator.page(1)
    except EmptyPage:
        number = paginator.page(paginator.num_pages)

    context = {"username":username,"tasklist_json":tasklist_json,"input_search_field":input_search_field,"input_keyword":input_keyword, 'page':number,'paginator':paginator}
    return render(request,'task/tasklist.html',context)

html

                    <tbody>
                      {% for taskinfo in page.object_list %}
                      <tr>
                        <td>
                          <label class="lyear-checkbox checkbox-primary">
                            <input type="checkbox" name="ids[]" value="{{ taskinfo.id }}"><span></span>
                          </label>
                        </td>
                        <td>{{ taskinfo.title  }}</td>
                        <td>
                          {% for tag in taskinfo.tags  %}
                        <span class="label {{ tag |last}}">{{ tag |first  }}</span>
                         {% endfor %}
                        </td>
                        <td>{{ taskinfo.username }}</td>
                        <td>{{ taskinfo.c_time }}</td>
                        <td>{{ taskinfo.s_time }}</td>
                        <td>{{ taskinfo.f_time }}</td>
                        <!-- <td><font class="text-warning">{{ taskinfo.get_status_display }}</font></td>
                        <td><font class="text-success">{{ taskinfo.get_tasktype_display }}</font></td> -->
                        <td><font class="text-warning">{{ taskinfo.status}}</font></td>
                        <td><font class="text-success">{{ taskinfo.tasktype }}</font></td>
                        <td>
                          <div class="btn-group">
                            <a class="btn btn-xs btn-default" href="/task/edittask?task_id={{ taskinfo.id }}" title="编辑" data-toggle="tooltip"><i class="mdi mdi-pencil"></i></a>
                            <a class="btn btn-xs btn-default" href="/task/add_task_point?task_id={{ taskinfo.id }}" title="创建小任务" data-toggle="tooltip"><i class="mdi mdi-format-list-bulleted"></i></a>
                            <a class="btn btn-xs btn-default" href="/task/taskinfo?task_id={{ taskinfo.id }}" title="任务详情" data-toggle="tooltip"><i class="mdi mdi-content-paste"></i></a>
                            <a class="btn btn-xs btn-default" href="#!" title="解决文档" data-toggle="tooltip"><i class="mdi mdi-book-open-page-variant"></i></a>
                          </div>
                        </td>
                        {% endfor %}
                      </tr>
                    </tbody>
                  </table>




                <ul class="pagination">
                  {# 如果当前页还有上一页 #}
                  {% if page.has_previous %}
                      <li>
                          {# 点击a标签,跳转到上一页链接 ?index  为地址后面拼接的参数 #}
                          <a href="?index={{page.previous_page_number}}">上一页</a>
                      </li>
                  {% else %}
                      {# 如果没有上一页, 则上一页按钮不可点击 #}
                      <li class="disabled">
                          <a href="#">上一页</a>
                      </li>
                  {% endif %}
                  {% for page_number in paginator.page_range %}
                  {# 获取当前页的页码 #}
            {% if page_number == page.number %}
                {# 如果是当前页的话,选中 #}
                <li class="active">
                    <a href="?index={{page_number}}">{{page_number}}</a>
                </li>
            {% else %}
                <li>
                    <a href="?index={{page_number}}">{{page_number}}</a>
                </li>
            {% endif %}
        {% endfor %}

        {% if page.has_next %}
            <li>
                <a href="?index={{page.next_page_number}}">下一页</a>
            </li>
        {% else %}
        <li class="disabled">
            <a href="#">下一页</a>
        </li>
        {% endif %}

相关文章

  • 分页-Django REST框架

    分页-Django REST框架 pagination.py 分页 Django提供了几个类来帮助您管理分页数据-...

  • Django-分页

    django-分页 一.django自带的分页 以读取UserInfo表为例 1.导入模块 from django...

  • django 使用原生sql及分页

    python3 django 使用原生sql及分页 django 使用原生sql及分页,类似于django res...

  • 分页

    分页 分页库Paginator的基本语法 django提供了分页的工具,存在于django.core中 Pagin...

  • 第20天,分页器

    本篇写了使用Django自有的分页器paginator的用法和自定制分页器 1.1 Django之分页功能 Dj...

  • (14)Django - 分页功能

    Django已为开发者内置了分页功能,只需调用Django内置分页功能的函数即可实现数据分页功能。我们在Djang...

  • 分页显示

    说明: 分页  Django 提供了一些类实现管理数据分页,这些类位于 django/core/pagina...

  • Django常用-分页

    分页 Django提供了数据分页的类,这些类被定义在django/core/paginator.py中。 类Pag...

  • Django之分页器

    Django自带分页器的实现 介绍 Django提供了一个新的类来帮助你管理分页数据,这个模块存放在django....

  • Django 分页

    Django 分页 view.py html

网友评论

      本文标题:Django 分页

      本文链接:https://www.haomeiwen.com/subject/bovaxctx.html