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