MVC
M 封装了对数据的访问,提供数据的支持
V view(视图),用于封装结果,提供页面支持
C 控制器,用来接收用户的请求,处理请求,返回响应
MVT
M 和MVC中的M相同
V view(视图),和MVC中的C相似,用于接收用户请求,返回响应
T template,和MVC中的V相似,提供一个页面的支持
分页
分页:一个页面显示太多数据,效果不好需要分页处理
一般分为两种:
-
前端分页
-
后端将数据一次性全部提供给前端,前端通过js进行分页
-
优点:简单直接
-
缺点:传输数据需要时间,对数据库压力大
-
-
后端分页
-
在数据库查询时,指定查询范围,类似于sql中的limit,ORM中的切片。
-
django中提供了分页插件,paginator,专门负责提供分页功能,在django1.4版本之后才有。
增加多条数据
分页提供的方法
from django.core.paginator import Paginator
def fytest(request):
## 使用django自带分页 Paginator 的时候 原数据要增加排序属性
article = Article.objects.all().order_by("-date")
# print(article)
# 每次显示 5条数据
paginator = Paginator(article,5) # 设置每一页显示多少条,返回一个Paginator 对象
# print (paginator.count) ## 返回内容总条数
# print(paginator.page_range) ## 可迭代的页数
# print(paginator.num_pages) ## 最大页数
page_obj= paginator.page(2)
print (page_obj) ## 可以有的页数的数据 表示的当前对象 <Page 20 of 21>
for one in page_obj:
print (one.content)
# print(page_obj.number) ## 当前页数
# print(page_obj.has_next()) ## 有没有下一页 返回值 是True 或者 Flase
# print(page_obj.has_previous()) ## 判断是否有上一页 是True 或者 Flase
# print(page_obj.has_other_pages()) ## 判断是否有其他页 是True 或者 Flase
# print(page_obj.next_page_number()) # 返回 下一页的页码 如果没有下一页 抛出异常
# print(page_obj.previous_page_number()) ## 返回上一页的页码
return HttpResponse("分页功能测试")
分页的基本实现
视图
模板
前端页面展示指定页数
路由
模板
图片
在django开发中,除了静态文件,还有媒体文件(视频,声音,图片),将文件上传到服务器上面,首先需要一个文件处理模块(例如:PIL(python2版本) 和 pillow 一样,作用就是处理图片的,参与人工智能,数据分析),其次需要文件的存储位置。
安装 pillow
pip install pillow
配置
修改模型
数据迁移
使用图片
站点管理
富文本
Ckeditor 一种成熟的富文本编辑器,于django结合的比较好
安装
配置
settings.py
路由