python16_day19Django_抽屉项目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python16_day19Django_抽屉项目相关的知识,希望对你有一定的参考价值。
一、缓存
基于内存缓存配置:
1.settings.py
CACHES = { ‘default‘: { ‘BACKEND‘: ‘django.core.cache.backends.locmem.LocMemCache‘, ‘LOCATION‘: ‘unique-snowflake‘, ‘TIMEOUT‘: 300, # 缓存超时时间(默认300,None表示永不过期,0表示立即过期) ‘OPTIONS‘: { ‘MAX_ENTRIES‘: 300, # 最大缓存个数(默认300) ‘CULL_FREQUENCY‘: 10, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3) }, # ‘KEY_PREFIX‘: ‘prev‘, # 缓存key的前缀(默认空) # ‘VERSION‘: 1, # 缓存key的版本(默认1) # ‘KEY_FUNCTION‘ 函数名 # 生成key的函数(默认函数会生成为:【前缀:版本:key】) } }
2.全站使用缓存
MIDDLEWARE = [ ‘django.middleware.cache.UpdateCacheMiddleware‘, # 其他中间件... ‘django.middleware.cache.FetchFromCacheMiddleware‘, ]
3.单独视图使用
from django.shortcuts import render import time from django.views.decorators.cache import cache_page @cache_page(10) # 10秒 def index(request): ctime = time.time() return render(request,‘index.html‘,{‘ctime‘: ctime})
templates/index.html
<h3>{{ ctime }}</h3>
4.页面局部使用
templates/index.html
1 {% load cache %} 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <meta charset="UTF-8"> 6 <title></title> 7 </head> 8 <body> 9 {% cache 5000 keyname %} 10 <h1>{{ ctime }}</h1> 11 {% endcache %} 12 13 <h3>{{ ctime }}</h3> 14 </body>
二、信号
1.内置信号
1 Model signals 2 pre_init # django的modal执行其构造方法前,自动触发 3 post_init # django的modal执行其构造方法后,自动触发 4 pre_save # django的modal对象保存前,自动触发 5 post_save # django的modal对象保存后,自动触发 6 pre_delete # django的modal对象删除前,自动触发 7 post_delete # django的modal对象删除后,自动触发 8 m2m_changed # django的modal中使用m2m字段操作第三张表(add,remove,clear)前后,自动触发 9 class_prepared # 程序启动时,检测已注册的app中modal类,对于每一个类,自动触发 10 Management signals 11 pre_migrate # 执行migrate命令前,自动触发 12 post_migrate # 执行migrate命令后,自动触发 13 Request/response signals 14 request_started # 请求到来前,自动触发 15 request_finished # 请求结束后,自动触发 16 got_request_exception # 请求异常后,自动触发 17 Test signals 18 setting_changed # 使用test测试修改配置文件时,自动触发 19 template_rendered # 使用test测试渲染模板时,自动触发 20 Database Wrappers 21 connection_created # 创建数据库连接时,自动触发
2.配置
mysite/mysite/__init__.py
1 from django.core.signals import request_finished 2 from django.core.signals import request_started 3 from django.core.signals import got_request_exception 4 5 from django.db.models.signals import class_prepared 6 from django.db.models.signals import pre_init, post_init 7 from django.db.models.signals import pre_save, post_save 8 from django.db.models.signals import pre_delete, post_delete 9 from django.db.models.signals import m2m_changed 10 from django.db.models.signals import pre_migrate, post_migrate 11 12 from django.test.signals import setting_changed 13 from django.test.signals import template_rendered 14 15 from django.db.backends.signals import connection_created 16 17 18 # sender 请求的所有信息 19 def callback(sender, **kwargs): 20 print("xxoo_callback") 21 print(sender,kwargs) 22 23 request_finished.connect(callback)
3.自定义信号
a.定义信号
import django.dispatch pizza_done = django.dispatch.Signal(providing_args=["toppings", "size"])
b.注册信号
def callback(sender, **kwargs): print("callback") print(sender,kwargs) pizza_done.connect(callback
c.触发信号
from 路径 import pizza_done pizza_done.send(sender=‘seven‘,toppings=123, size=456)
以上是关于python16_day19Django_抽屉项目的主要内容,如果未能解决你的问题,请参考以下文章
python2.0_day19_充分使用Django_form实现前端操作后台数据库