1. 程式人生 > >路飛專案背景,contentType以及django快取

路飛專案背景,contentType以及django快取

 

昨日回顧:

 

分頁器:

 

普通分頁

# 普通分頁
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