VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > python入门教程 >
  • python3 之 天天生鲜 项目 缓存cache

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
复制代码

 

出处:https://www.cnblogs.com/Py-beginner/p/13880033.html



相关教程