商品列表页之后台站点触发异步任务

当用户访问网址/list.html?cat=xxx时,会进入商品列表页。网址中的cat参数是用于过滤商品数据的第三级商品类别,也就是说在商品列表中,会根据cat参数筛选商品数据用于展示。

1)定义异步任务,celery_tasks/html/tasks.py文件中添加异步代码:

@celery_app.task(name='generate_static_list_search_html')
def generate_static_list_search_html():
    """
    生成静态的商品列表页和搜索结果页html文件
    """
    # 商品分类菜单
    categories = get_categories()

    # 渲染模板,生成静态html文件
    context = {
        'categories': categories,
    }

    template = loader.get_template('list.html')
    html_text = template.render(context)

    file_path = os.path.join(settings.GENERATED_STATIC_HTML_FILES_DIR, 'list.html')
    with open(file_path, 'w') as f:
        f.write(html_text)

2)渲染模板,修改templates/list.html和修改list.js文件文件

3)站点管理触发异步任务,goods/admin.py文件添加代码:

class GoodsCategoryAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        obj.save()
        from celery_tasks.html.tasks import generate_static_list_search_html
        generate_static_list_search_html.delay()

    def delete_model(self, request, obj):
        obj.delete()
        from celery_tasks.html.tasks import generate_static_list_search_html
        generate_static_list_search_html.delay()

admin.site.register(models.GoodsCategory,GoodsCategoryAdmin)

猜你喜欢

转载自www.cnblogs.com/cl-python/p/9291510.html
今日推荐