缓存
第一步在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)