基于 oracle 的 flask 项目(四)——搜索查询
发布时间:2020-12-12 14:06:40 所属栏目:百科 来源:网络整理
导读:搜索功能是一个项目个性化需求最强烈的部分,用户想要不同的报表,可以通过搜索不同的字段来实现。 项目描述 管理员用户可以搜索本部门下所有用户的各个月份的相关信息。 一般用户只能搜索各个月份自己的相关信息。 实现搜索页面 创建forms 类,使用 flask-wt
搜索功能是一个项目个性化需求最强烈的部分,用户想要不同的报表,可以通过搜索不同的字段来实现。 项目描述
实现搜索页面
此处使用flask的基本功能,不再赘述,详情请参见代码。 在试图函数中实现相关搜索功能
@show.route('/01',methods = ['GET','POST']) @login_required def _01(): search_form = SearchForm(prefix='search') ... if current_user.role == 'admin': ... ... if search_form.validate_on_submit(): database = db.session.query(OusiStaff.department,OusiStaff.name.label('staff_name'),OusiStaff.phone,OusiStaff.role,g1.name.label('guest_name'),g1.month,g1.balance,func.nvl(db.session.query(g2.balance).filter( g1.name==g2.name,func.to_date(g2.month,'yyyy-mm')==func.add_months( func.to_date(g1.month,'yyyy-mm'),-1) ),0).label('last_balance') ).filter( OusiStaff.phone == g1.staff_phone,current_user.department==OusiStaff.department,and_(g1.month.between(search_form.start_time.data.strip(),search_form.end_time.data.strip()),OusiStaff.name.like('%{}%'.format(search_form.name.data.strip())),OusiStaff.phone.like('%{}%'.format(search_form.phone.data.strip()))) ).order_by(g1.name).group_by(OusiStaff.department,g1.balance) ... else: ... ... if search_form.validate_on_submit(): database = db.session.query(OusiStaff.department,func.nvl(db.session.query(g2.balance).filter( g1.name == g2.name,'yyyy-mm') == func.add_months( func.to_date(g1.month,current_user.phone == OusiStaff.phone,g1.month.between(search_form.start_time.data.strip(),search_form.end_time.data.strip()) ).order_by(g1.name).group_by(OusiStaff.department,g1.balance) ... ... return render_template('show/01.html',data=data,searchForm=search_form) 这是第一个页面的的搜索功能实现方法,使用了 @show.route('/02','POST']) @login_required def _02(): search_form = SearchForm(prefix='search') ... ... if current_user.role == 'admin': ... ... if search_form.validate_on_submit(): database = db.session.query(sbq.c.department,sbq.c.role,sbq.c.staff_name,sbq.c.staff_phone,sbq.c.month,func.count(sbq.c.guest_name).label('members'),func.sum(sbq.c.balance).label('balance'),func.sum(sbq.c.last_balance).label('last_balance')). filter(and_(sbq.c.month.between(search_form.start_time.data.strip(),sbq.c.staff_name.like('%{}%'.format(search_form.name.data.strip())),sbq.c.staff_phone.like('%{}%'.format(search_form.phone.data.strip()))) ).group_by(sbq.c.department,sbq.c.month) else: ... ... if search_form.validate_on_submit(): database = db.session.query(sbq.c.department,func.sum(sbq.c.last_balance).label('last_balance')). filter(sbq.c.month.between(search_form.start_time.data.strip(),search_form.end_time.data.strip())).group_by(sbq.c.department,sbq.c.month) ... ... return render_template('show/02.html',searchForm=search_form) 这是第二页面的实现方法。 结果展示第一个页面
第二个页面
这两个动图展示的是管理员权限的用户的搜索查询界面。
源码下载 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |