Python 26 Django緩存、序列化、信號、debug工具

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
相關文章
相關標籤/搜索