昨日回顾:
分页器:
普通分页
# 普通分页 from rest_framework.pagination import PageNumberPagination -每页的大小(默认) -查询的时候,按哪个字段查 -当前页的每页大小(用户指定的) -每页显示最大条数 -写一个类继承分页类,重写属性 -使用的时候: -实例化出一个分页器对象 -返回值=对象.paginate_queryset(book_list, request, self) -序列化(返回值) -return序列化之后的值
偏移分页
# 偏移分页 from rest_framework.pagination import LimitOffsetPagination -每页的大小:default_limit -标杆值offset -偏移值limit -最大偏移的数:max_limit 加密分页(速度快)
加密分页(速度快)
# 加密分页 from rest_framework.pagination import CursorPagination -写一个类继承分页类,重写属性 -cursor_query_param:以该字段配置的值查询 -ordering 按哪个字段排序
版本控制:
-URLPathVersioning -版本直接放在路由中,配置路由 url(r'^(?P<version>[v1|v2|v3]+)/books/$', views.Book.as_view({'get':'get_all'}),name='ttt'), -在setting中配置 'VERSION_PARAM':'version', #根据哪个键取查询 'DEFAULT_VERSION':'v1', #默认的版本号 'ALLOWED_VERSIONS': ['v1', 'v2'], #允许的版本号 -在视图类中:局部使用 versioning_class = URLPathVersioning -在request对象中,可以取出版本request.version -反向解析 -因为request对象能取出版本号,内部自动填入 -url2=request.versioning_scheme.reverse('ttt',request=request) -如果是路由有别的有名/无名分组,需要手动传过去 -QueryParameterVersioning
路飞项目背景
人员配比: 开发: -前端vue一个人 -主站 2个人 -导师后台 1 个人 -管理员后台 1个人 ui+原型设计 1 个人 产品经理 1 个人 测试 1个人 专职导师:2个人 项目: 主站: -课程 -课程详情 -课程章节 -课程的价格策略 -个人中心 -登录 -注册 -修改密码 -... -购物车 -加入购物车 -修改购物车 -支付中心 -去支付 -优惠券 -6种优惠券:全站的:满减,立减,打折 每个课程:满减,立减,打折 -去支付 -支付宝支付 -推送 -微信推送 -视频播放 咱们要写的: 课程相关的,登录,购物车,支付中,支付宝支付,推送,视频播放
contentType组件
干啥用的?django内置的一个组件,方便我们快速的连表操作 在course表中: policy = GenericRelation('PricePolicy', object_id_field='course_id', content_type_field='table_id') 在价格策略表中: content_obj = GenericForeignKey('table_id','course_id') --加的这两个字段都不会在数据库中生成,它只是用来查询,插入
django的缓存
全站缓存:
两个中间件: MIDDLEWARE_CLASSES = ( ‘django.middleware.cache.UpdateCacheMiddleware’, #第一 'django.middleware.common.CommonMiddleware', ‘django.middleware.cache.FetchFromCacheMiddleware’, #最后 )
单页面缓存:
-from django.views.decorators.cache import cache_page -装饰器加载视图函数上即可 @cache_page(5)
页面局部缓存:
{% load cache %} #第一个参数是时间,第二个参数是别名 {% cache 5 'test' %} 缓存的时间: {{ ctime }} {% endcache %} 缓存的位置:(只需要改配置文件) 内存 文件 数据库 redis