django -- 内置分页

urls.py

from django.conf.urls import url
from conn_oracle import views

urlpatterns = [
    url(r‘^page/‘, views.page),
]

views.py

from django.shortcuts import render
from conn_oracle import models
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

def page(request):
    contact_list = models.UserRegister.objects.all()
    paginator = Paginator(contact_list, 10)  # Show 10 contacts per page
    page = request.GET.get(‘page‘)
    try:
        contacts = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        contacts = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        contacts = paginator.page(paginator.num_pages)

    return render(request, ‘page.html‘, {‘contacts‘: contacts})

models.py

from django.db import models

class UserRegister(models.Model):
    user_id = models.CharField(max_length=200, primary_key=True, db_column=‘user_id‘, null=True)
    login_name = models.CharField(max_length=50, db_column=‘login_name‘, null=True)
    user_gender = models.CharField(max_length=1, db_column=‘user_gender‘)
    user_real_name = models.CharField(max_length=200)
    user_hsp_name = models.CharField(max_length=300)

    class Meta:
        db_table = ‘user_register‘

page.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1 class="i1">Info of USERS</h1>

    <table class="i1" border = 1px cellpadding="5">
        <thead>
            <tr>
                <th>用户id</th>
                <th>用户名</th>
                <th>性别</th>
                <th>姓名</th>
                <th>单位</th>
            </tr>
        </thead>
        <tbody>
            {% for item in contacts %}
                <tr>
                    <td>{{ item.user_id }}</td>
                    <td>{{ item.login_name }}</td>
                    <td>{{ item.user_gender }}</td>
                    <td>{{ item.user_real_name }}</td>
                    <td>{{ item.user_hsp_name }}</td>
                </tr>
            {% endfor %}
        </tbody>
    </table>

    <div class="pagination">
        <span class="step-links">
            {% if contacts.has_previous %}
                <a href="?page={{ contacts.previous_page_number }}">previous</a>
            {% endif %}

            <span class="current">
                Page {{ contacts.number }} of {{ contacts.paginator.num_pages }}.
            </span>

            {% if contacts.has_next %}
                <a href="?page={{ contacts.next_page_number }}">next</a>
            {% endif %}
        </span>
    </div>

</body>
</html>

效果:

注:参考  https://docs.djangoproject.com/en/1.10/topics/pagination/

时间: 2024-12-17 15:24:27

django -- 内置分页的相关文章

Django内置分页扩展

url文件 urlpatterns = [ path('admin/', admin.site.urls), path('index1.html/', views.index1), ] views文件 from django.shortcuts import render from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger # Create your views here. USER_LIST = []

Django内置的分页模块

自定义分页 未封装版: 优点:直观 缺点:代码乱,不易维护,可拓展性差 data = [] for i in range(1, 302): tmp = {"id": i, "name": "alex-{}".format(i)} data.append(tmp) print(data) def user_list(request): # user_list = data[0:10] # user_list = data[10:20] try: c

Django内置Admin

Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件,使用方式有: 依赖APP: django.contrib.auth django.contrib.contenttypes django.contrib.messages django.contrib.sessions 模板的context_processors: django.contrib.auth.context_processors.auth django.contrib.messages.context_

django 内置 admin

Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件使用方式有 依赖APP         django.contrib.auth         django.contrib.contenttypes         django.contrib.messages         django.contrib.sessions     模板的context_processors         django.contrib.auth.context_processo

Django框架进阶6 多对多三种创建方式, Ajax, Content-Type前后端传输数据编码格式, Ajax发送文件数据, django内置的序列化功能, Ajax结合sweetalert实现删除二次确认, 批量插入数据, 自定义分页器, ajax结合sweetalert实现删除二次确认

多对多三种创建方式 1.全自动(较为常用) class Book(models.Model): title = models.CharField(max_length=32) authors = models.ManyToManyField(to='Author') # orm就会自动帮你创建第三张表 class Author(models.Model): name = models.CharField(max_length=32) ''' 好处:第三张表自己创建 不足之处:第三张表无法扩展额外

Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

前言 基本环境 Django版本:1.11.8 Python版本:3.6 OS: win10 x64 本文摘要 提供了常用的Django内置过滤器的详细介绍,包括过滤器的功能.语法.代码和效果示例. 本文完整项目文件代码下载地址:完整示例 Django完整内置过滤器帮助文档:Django内置过滤器完整版 参考文献:Django 中文文档 1.8 内置过滤器 注意:所有带参数的过滤器,在使用时,冒号:和参数中间不能有空格. add加 功能: 把add后的参数num加给value: 数字相加会进行算

Django内置重置密码的功能(发邮箱)

首先我们要想用Django内置的重置密码的功能,我们要知道Django内置的函数是怎么写的 def password_reset(request, template_name='registration/password_reset_form.html', email_template_name='registration/password_reset_email.html', subject_template_name='registration/password_reset_subject.

Django内置模板标签

Django内置标签总览 可以查询下表来总览Django的内置标签: 标签 说明 autoescape 自动转义开关 block 块引用 comment 注释 csrf_token CSRF令牌 cycle 循环对象的值 debug 调试模式 extends 继承模版 filter 过滤功能 firstof 输出第一个不为False的参数 for 循环对象 for … empty 带empty说明的循环 if 条件判断 ifequal 如果等于 ifnotequal 如果不等于 ifchange

Django内置模版过滤器

Django内置过滤器总览 可以查询下表来总览Django的内置过滤器: 过滤器 说明 add 加法 addslashes 添加斜杠 capfirst 首字母大写 center 文本居中 cut 切除字符 date 日期格式化 default 设置默认值 default_if_none 为None设置默认值 dictsort 字典排序 dictsortreversed 字典反向排序 divisibleby 整除判断 escape 转义 escapejs 转义js代码 filesizeformat