Django缓存与信号

缓存
第一步在setting中设置使用什么进行缓存(文件,redis,数据库等)
使用缓存
全栈使用缓存(中间件中使用缓存)
    MIDDLEWARE = [
    'django.middleware.cache.UpdateCacheMiddleware',
    # 其他中间件...
    'django.middleware.cache.FetchFromCacheMiddleware',
]

在视图函数中使用缓存:
	from django.views.decorators.cache import cache_page
	@cache_page(60 * 15) 
	def fun(request):
		pass
在路由匹配中使用缓存
	from django.views.decorators.cache import cache _page
	urlpatterns = [
	url(r'^foo/([0-9]{1,2})/$',cache_page(60 * 15)(my_view)),
]
在函数里面使用缓存
	函数中使用缓存是最基本的使用方法,跟在其他非 django 中使用的方式一致,无非就是使用 cache.set() 和 cache.get() 方法。
模板中使用缓存
	{% load cache %}
		{% cache 500 ‘cache_name’ %}
		缓存内容
	{% endcache %}
信号
什么是信号:就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者。
Django内置信号
Model signals  数据库执行某个操作前后
Management signals 执行migrate命令前,后
Request/response signals 关于请求的信号
Test signals 使用test测试
Database Wrappers 数据库连接时,自动发生的

自定义信号
	定义信号
	import django.dispatch
	pizza_done = django.dispatch.Signal(providing_args=["toppings", "size"])
	 注册信号
	def callback(sender, **kwargs):
		print("callback")
		print(sender,kwargs)

	pizza_done.connect(callback)
	触发信号
	from 路径 import pizza_done

	pizza_done.send(sender='seven',toppings=123, size=456)
上一篇:如何在Python中加速信号处理


下一篇:django信号机制 (每个操作前后django都预留了两个钩子,便于统一化添加功能)