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
相关文章
相关标签/搜索