当前位置: 首页 > news >正文

订餐后台管理系统-day06菜品分类模块

菜品分类显示

  • 我们需要先实现分类操作,因为没有菜品分类,我们无法准确知道当前菜品属于哪个分类,在前端显示时,需要根据分类显示数据

  • 先显示分类列表页面

  • 准备路由

@manage_bp.route('/food/cat/list')
def food_cat_list():# 默认页面从1开始page = int(request.args.get('page', 1))query = FoodCat.query
​status_name = int(request.args.get('status', '-1'))# 如果有状态值就取反之默认-1if status_name > -1:query = query.filter(FoodCat.status == status_name)# -号降序排序 先按权重降序,权重相同时按ID降序page_data = query.order_by(-FoodCat.weight, -FoodCat.id).paginate(page=page, per_page=Config.PER_PAGE)
​resp_data = {'list': page_data,'status_mapping': constants.STATUS_MAPPING,'current': 'cat'}
​return ops_render('food/cat.html', resp_data)

分类添加和编辑

  • 和上面的用户添加和编辑操作一样,我们可以在同一个路由中,完成添加和编辑的操作

  • 用户点击编辑按钮的时候,使用get方式传递一个id值。如果使用的是get方式则为编辑页,需要先获取当前id的分类数据,传递到cat_set.html页面中,进行渲染。

@manage_bp.route('/food/cat/edit', methods=['GET', 'POST'])
def food_cat_edit():if request.method == 'GET':resp_data = {}req = request.argsc_id = int(req.get('id', 0))info = Noneif c_id:info = FoodCat.query.get(c_id)resp_data['info'] = inforesp_data['current'] = 'cat'
​return ops_render('food/cat_set.html', resp_data)
  • 编辑和添加的操作内容大致相同,不过我们需要判定是否有id传递,如果有则获取当前id的数据对象,进行添加的操作(此时的添加其实是修改)。如果没有则获取一个空的数据对象,进行真正的添加操作

    if request.method == 'POST':resp = {'code': 200, 'msg': '操作成功!', 'data': {}}req = request.values# 是否有id传递c_id = req['id'] if 'id' in req else 0# 有值则拿值,没有为空name = req['name'] if 'name' in req else ''# 权重默认值为1weight = int(req['weight']) if ('weight' in req and int(req['weight']) > 0) else 1# 为空不能添加if not name or len(name) < 1:resp['code'] = -1resp['msg'] = '类别名称不能为空!'return jsonify(resp)
​info = FoodCat.query.get(c_id)if not info:info = FoodCat()
​info.name = nameinfo.weight = weightdb.session.add(info)db.session.commit()return jsonify(resp)

删除分类(修改状态)

  • 因为在真实操作用,不需要删除的操作,我们可以将当前分类的状态修改为无效即可,具体状态码,可以查看食物类别的模型类中的comment备注

@manage_bp.route('/food/cat/ops', methods=['PUT'])
def foot_cat_ops():resp = {'code': 200, 'msg': '操作成功!', 'data': {}}req = request.values# 同一个元素,根据传递的参数不同,执行删除或者恢复的操作# 这里就需要前端传参的时候进行配合,和用户的禁用其实是一个道理c_id = req['id'] if 'id' in req else 0act = req['act'] if 'act' in req else ''if not c_id:resp['code'] = -1resp['msg'] = '操作失败!'return jsonify(resp)if act not in ['remove', 'recover']:resp['code'] = -1resp['msg'] = '操作失败!'return jsonify(resp)cat_obj = FoodCat.query.get(c_id)if not cat_obj:resp['code'] = -1resp['msg'] = '指定类别不存在!'return jsonify(resp)if act == 'remove':cat_obj.status = 0elif act == 'recover':cat_obj.status = 1db.session.commit()return jsonify(resp)

http://www.dtcms.com/a/360333.html

相关文章:

  • 工业软件领域SAAS模式为何不能得到普及?
  • 上海交大具身导航中的感知智能、社会智能和运动智能全面综述
  • 网络端口与服务对应表 - 白帽子安全参考指南
  • Android开发-设计规范
  • 安装proteus,并实现stm32仿真
  • 当 AI 开始 “筛选” 信息:算法偏见会加剧认知鸿沟吗?如何构建公平的 AI 生态?
  • 深入解析 Oracle 并发与锁机制:高并发环境下的数据一致性之道
  • Log File Sync等待事件分析
  • linux日志同步
  • strtok()字符串分隔函数
  • OpenStack 01:介绍
  • Batch Normalization 批归一化
  • 实现自己的AI视频监控系统-第三章-信息的推送与共享1
  • AI辅助编程日记和chat历史开源Series 1:VSCode + GitHub Copilot 自动下载及安装软件
  • 大模型训练全流程
  • 在deepseek v3.1上加自信度参数的外挂方案,plugin,朝向一步一步
  • [光学原理与应用-361]:ZEMAX - 分析 - 像差分析
  • Win32学习笔记 | recv函数
  • MVC架构模式
  • XXL-JOB任务执行The access token is wrong问题分析解决及原理源码解析
  • 【Linux】linux进程 vs 线程
  • 《WINDOWS 环境下32位汇编语言程序设计》第9章 通用控件(2)
  • Modbus CRC16校验码在线计算器
  • Python训练营打卡Day49-神经网络调参指南
  • 大模型参数量与计算量(FLOPs)估算方法
  • [WUSTCTF2020]B@se1
  • 后向投影合成孔径辐射源定位方法(一)
  • Linux-数据库
  • MVC模式学习
  • 物种多样性与物种丰富度