一、场景
- 从前端获取时间范围
- 时间范围作为参数传递给后端
- 后端将时间范围参数转换datetime类型
- 根据时间范围进行数据库查询
二、功能实现
- 前端获取时间范围
<form action="/datetime" method="post"> <input type="date" value="2020-01-01" name="s_time"/> <input type="date" value="2020-01-10" name="e_time"/> <input type="submit" value="查询"> </form>
- 后端接受参数
- 个人采用tornado框架;不同python_web框架获取参数不同,根据自己框架修改获取参数
import datetime class DateTimeHandler(BaseHandler): def get(self): # 渲染template给前端 self.render("datetime.html", title="Method: GET, This is DateTimeHandler") def post(self): # 从前端form表单 获取时间范围参数 start_time = self.get_argument("s_time") end_time = self.get_argument("e_time") s_time = str_to_datetime(start_time) # 前端获取参数为str格式,将str转换datetime类型,方法在下面 e_time = str_to_datetime(end_time) queryset = OrderInfo.get_by_date_scope(s_time, e_time) self.write("ok") def str_to_datetime(str_time): # str_time = '2020-01-01' date_time = datetime.datetime.strptime(str_time, '%Y-%m-%d') return date_time
- 数据库查询方法
def get_by_date_scope(s_time, e_time): queryset = db.session.query(OrderInfo).filter(OrderInfo.c_time >= s_time).filter(OrderInfo.c_time <= e_time).all() return queryset
- queryset反序列化,返回给前端查询到的数据