1、緩存css
一、配置html
CACHES = { 'default' = { 'BACKEND': 'django.core.cache.backend.locmem.LocMemCache', # 這是保存到內存中 'LOCATION': 'unique-snowflake', # 這是惟一標識 'TIMEOUT': 300, # 超時時間,默認300,None爲永不過時,0表示當即過時 'OPTIONS': { 'MAX_ENTRIES': 300, # 最大緩存個數,默認300 'CULL_FREQUENCY': 3, # 緩存到達最大個數後,剔除的比例,即三分之一 } } }
CACHES = { 'default' = { 'BACKEND': 'django.core.cache.backend.filebased.FileBasedCache', # 這是保存到文件中 'LOCATION': 'E://xxx', # 這是保存的路徑 'TIMEOUT': 300, # 超時時間,默認300,None爲永不過時,0表示當即過時 'OPTIONS': { 'MAX_ENTRIES': 300, # 最大緩存個數,默認300 'CULL_FREQUENCY': 3, # 緩存到達最大個數後,剔除的比例,即三分之一 } } }
CACHES = { 'default' = { 'BACKEND': 'django.core.cache.backend.dummy.DummyCache', # 這裏表示不做任何緩存,只是佔位,方便開發調試 'LOCATION': 'unique-snowflake', # 這是惟一標識 'TIMEOUT': 300, # 超時時間,默認300,None爲永不過時,0表示當即過時 'OPTIONS': { 'MAX_ENTRIES': 300, # 最大緩存個數,默認300 'CULL_FREQUENCY': 3, # 緩存到達最大個數後,剔除的比例,即三分之一 } } }
二、應用jquery
① 單個緩存數據庫
from django.views.decorators.cache import cache_page @cache_page(15) # 在十五秒內再次訪問,不會打印111,即便數據庫更新,也不會在該時間內刷新頁面數據 def user_list(request): print("111") return render(request, 'xx.html')
② 全站緩存django
# 獲取緩存須要在最後一個request_process中獲取,由於前面的中間件可能會對數據進行一些操做或者校驗,好比csrf。所以,須要把獲取緩存的中間件放在中間件配置的最後 # 存放緩存須要在最後一個process_response中存放,由於前面的中間件可能會對數據進行一些處理。所以須要把存放緩存的中間件放在中間件配置的開頭 MIDDLEWARE = { 'django.middleware.cache.UpdateCacheMiddleware', # 其餘中間件 'django.middleware.cache.FetchCacheMiddleware', } CACHE_MIDDLEWARE_SECONDS = 300 # 超時時間,默認300
③ 局部緩存json
{% load cache %} {% cache 100 'xx' %} 傳入一個超時時間,一個鍵名 放一些數據 {% endcache %}
2、序列化緩存
序列化就是將數據轉化成可識別、可傳輸的字符串格式app
json默認不能序列化時間對象,可是能夠自定義類來實現對時間對象的序列化。ide
import json class JsonCustomerEncoder(json.Encoder): def default(self, field): if isinstance(field, datetime): return field.strftime("%Y-%m-%h %H-%M-%S") elif isinstance(field, date): return dield.strftime("%Y-%m-%h") else: return json.JsonEncoder.default(self, field) json.dumps(date, cls=JsonCustomerEncoder)
3、信號工具
信號是django給開發者預留的一些操做,遍及在django的請求生命週期中,能夠在觸發信號的時候進行一些自定義操做。
Model signals pre_init # django的model執行其構造方法前,自動觸發 post_init # django的modal執行其構造方法後,自動觸發 pre_save # django的modal對象保存前,自動觸發 post_save # django的modal對象保存後,自動觸發 pre_delete # django的modal對象刪除前,自動觸發 post_delete # django的modal對象刪除後,自動觸發 m2m_changed # django的modal中使用m2m字段操做第三張表(add,remove,clear)先後,自動觸發 class_prepared # 程序啓動時,檢測已註冊的app中modal類,對於每個類,自動觸發 Management signals pre_migrate # 執行migrate命令前,自動觸發 post_migrate # 執行migrate命令後,自動觸發 Request/response signals request_started # 請求到來前,自動觸發 request_finished # 請求結束後,自動觸發 got_request_exception # 請求異常後,自動觸發 Test signals setting_changed # 使用test測試修改配置文件時,自動觸發 template_rendered # 使用test測試渲染模板時,自動觸發 Database Wrappers connection_created # 建立數據庫鏈接時,自動觸發
使用:
在__init__中寫
from django.dispatch import receiver from django.db.models.signals import post_save # 方式一 def callback(sender, **kwargs): print(sender) post_save.connect(callback)
# 方式二 @recevier(post_save) def callback(sender, **kwargs): print(sender)
4、debug工具django-debug-toolbar
django-debug-toolbar 是一組可配置的面板,可顯示有關當前請求/響應的各類調試信息,並在單擊時顯示有關面板內容的更多詳細信息。
pip3 install django-debug-toolbar
一、在settings.py中
INSTALLED_APPS = [ 'debug_toolbar', ]
# 配置中間件
MIDDLEWARE = [
'debug_toolbar.middleware.DebugToolbarMiddleware',
]
# 配置jquery
DEBUG_TOOLBAR_CONFIG = {
"JQUERY_URL": '//cdn.bootcss.com/jquery/2.2.4/jquery.min.js',
}
INTERNAL_IPS = [‘127.0.0.1’, ] # 若是是本機調試
二、在urls.py中
from django.conf import settings from django.conf.urls import include, url if settings.DEBUG: import debug_toolbar urlpatterns = [ url(r'^__debug__/', include(debug_toolbar.urls)), ] + urlpatterns