需求背景:
当在admin后台修改数据时,重新执行celery异步任务生成首页静态页面
异步任务代码如下:
@shared_task(name='celery_tasks.generate_static_index') def generate_static_index(): """生成首页静态页面""" # 获取商品分类信息 goods_types = GoodsType.objects.all() # 获取轮播图信息 goods_banners = IndexGoodsBanner.objects.all().order_by('index') # 默认升序排列,如果降序则为"-index" # 获取促销活动信息 promotion_banners = IndexPromotionBanner.objects.all().order_by('index') # 获取首页分类商品展示信息 for type in goods_types: # 获取type种类首页展示的商品的图片信息 image_banners = IndexTypeGoodsBanner.objects.filter(type=type, display_type=1) # 获取type种类首页展示的商品的文字信息 title_banners = IndexTypeGoodsBanner.objects.filter(type=type, display_type=0) # 动态给type对象添加商品图片、文字信息 type.image_banners = image_banners type.title_banners = title_banners # 组织模板上下文信息 context = { 'goods_types': goods_types, 'goods_banners': goods_banners, 'promotion_banners': promotion_banners, } #生成静态文件 static_index_html = render_to_string('static_index.html',context=context) static_index_path = os.path.join(settings.BASE_DIR,'static/index.html') #将静态文件存储到static目录下 with open(static_index_path,'w',encoding='utf-8') as f: f.write(static_index_html)