1、创建数据库
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
models.py
#coding:utf-8
from django.db import models
# Create your models here.
class Book(models.Model):
#书名
title = models.CharField(max_length=32)
#价格 max_digits=9,decimal_places=2:
price = models.DecimalField(max_digits=9,decimal_places=2)
def __str__(self):
return self.title
urls.py
from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path("index/",views.index),
]
views.py
#coding:utf-8
from django.shortcuts import render
# Create your views here.
from app01.models import Book
from django.core.paginator import Paginator,EmptyPage
def index(request):
"""批量插入数据"""
for i in range(100):
Book.objects.create(title="book_%s"%i,price=i*i)
return render(request,"index.html")
将db.sqlite3数据拽入到数据库中
得到数据库如下所示:
将Django项目进行运行,运行以下代码进行数据随机生成
views.py
#coding:utf-8
from django.shortcuts import render
# Create your views here.
from app01.models import Book
from django.core.paginator import Paginator,EmptyPage
def index(request):
"""批量插入数据"""
#此方法速度太慢
# for i in range(100):
# Book.objects.create(title="book_%s"%i,price=i*i)
book_list = []
for i in range(100):
book = Book(title="book_%s"%i,price=i*i)
book_list.append(book)
Book.objects.bulk_create(book_list)#批量插入
return render(request,"index.html")
运行结果:
2、数据展示页面
views.py
#coding:utf-8
from django.shortcuts import render
# Create your views here.
from app01.models import Book
from django.core.paginator import Paginator,EmptyPage
def index(request):
"""批量插入数据"""
# #此方法速度太慢
# # for i in range(100):
# # Book.objects.create(title="book_%s"%i,price=i*i)
#
# book_list = []
# for i in range(1,101):
# book = Book(title="book_%s"%i,price=i*i)
# book_list.append(book)
#
# Book.objects.bulk_create(book_list)#批量插入
# return render(request,"index.html")
#分页器的使用
# print(paginator.count) # 显示数据的总条数
# print(paginator.num_pages) # 显示数据被分成多少页
# print(paginator.page_range) # 显示页数的范围(1,11)包含1不包含11
#
# page = paginator.page(5) # 获取第五页的数据
# for i in page:
# print(i)
#
# print(page.has_next()) # 是否存在下一页
# print(page.has_previous()) # 是否存在上一页
#
# print(page.next_page_number())
# print(page.previous_page_number())
"""数据展示"""
book_list = Book.objects.all()
# 每页显示10页数据
paginator = Paginator(book_list,10)
try:
current_page_num = request.GET.get("page",1)#获取页面page的值,如果获取不到则获取第一页的数据
current_page = paginator.page(current_page_num)
except EmptyPage as e:
current_page_num = 1
current_page = paginator.page(1)
return render(request,"index.html",{"current_page":current_page,"paginator":paginator,"current_page_num":current_page_num})
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>数据页面</title>
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
<ul>
{% for book in current_page %}
<li>{{ book.title }}----{{book.price }}</li>
{% endfor %}
</ul>
<nav aria-label="Page navigation">
<ul class="pagination">
{% if current_page.has_previous %}
<li><a href="?page={{ current_page.previous_page_number }}"></a></li>
{% else %}
<li class="disabled"><a href="">上一页</a></li>
{% endif %}
{% for num in paginator.page_range %}
{% if num == current_page_num %}
<li class="active"><a href="?page={{ num }}">{{ num }}</a></li>
{% else %}
<li><a href="?page={{ num }}">{{ num }}</a></li>
{% endif %}
{% endfor %}
<li>
<a href="#" aria-label="Next">
<span aria-hidden="true">下一页</span>
</a>
</li>
</ul>
</nav>
</body>
</html>
运行结果如下所示:
本期学习到此结束,欢迎大家关注交流。