settings
# 缓存 CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1/5", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } } } #默认 # SESSION_CACHE_ALIAS = "default"
首页设置缓存 及缓存过期时间 redis数据库读写速度快
#首页 设置缓存 class Index(View): def get(self,request): #先获取缓存 cache_data = cache.get('index_page_data') #如果 没有缓存 if cache_data is None: #获取商品种类(所有对象) categorys = GoodsCategory.objects.all() #轮播信息 横幅 banners = IndexGoodsBanner.objects.all() #活动 促销 信息 promotions = IndexPromotionBanner.objects.all() # 商品列表 关联 for category in categorys: titles = IndexCategoryGoodsBanner.objects.filter(category=category,display_type=0) category.display_titles = titles #GoodsCategory类 category对象动态添加属性 dispiay_images = IndexCategoryGoodsBanner.objects.filter(category=category,display_type=1) category.display_images = dispiay_images #便于在 模板中调用 #上下文 context = { 'categorys':categorys,'banners':banners,'promotions':promotions } # 设置缓存key、内容、有效时间 cache.set('index_page_data',context,3600) #有效时间3600秒 #再次获取缓存 cache_data = cache.get('index_page_data') return render(request,'index.html',cache_data)
admin 站点管理 修改数据后 删除缓存
class BaseAdmin(admin.ModelAdmin): """商品活动信息的管理类,运营人员在后台发布内容时,异步生成静态页面""" ''' 数据发生变化 保存---然后---异步生成静态文件 ''' def save_model(self, request, obj, form, change): """后台保存对象数据时使用""" # obj表示要保存的对象,调用save(),将对象保存到数据库中 obj.save() # 修改了数据库数据就需要删除缓存 cache.delete('index_page_data') def delete_model(self, request, obj): """后台保存对象数据时使用""" obj.delete() cache.delete('index_page_data')
# 继承 BaseAdmin 类,使以下 都具有保存和删除后 生成新的页面 class GoodsCategoryAdmin(BaseAdmin): """商品活动站点管理,如果有自己的新的逻辑也是写在这里""" # list_display = [] pass class IndexGoodsBannerAdmin(BaseAdmin): pass