当用户访问网址/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)