You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask+SQLAlchemy CRUD应用:无结束日期时的日期过滤实现

解决方案:Flask日期筛选逻辑修正

核心逻辑修正(app.py)

你需要在获取日期参数后添加判断逻辑,处理结束日期为空的场景,同时补充边界情况避免查询报错。修改后的代码如下:

@app.route('/', methods=['GET', 'POST'])
def index():
    # 获取前端传入的日期参数,未输入时返回None
    search_date_start = request.args.get('start_date_filter')
    search_date_end = request.args.get('end_date_filter')

    # 处理结束日期为空的情况:自动设为远期日期
    if not search_date_end:
        search_date_end = '2050-01-01'
    
    # 构建查询:若有开始日期则按区间筛选,否则查询所有记录
    query = appts_db.query.order_by(appts_db.pickup_date)
    if search_date_start:
        query = query.filter(appts_db.pickup_date.between(search_date_start, search_date_end))
    
    appts = query.all()

    return render_template('index.html', appts=appts)

逻辑说明:

  • if not search_date_end: 覆盖了用户未输入结束日期、或传入空字符串的所有情况,统一替换为预设的2050-01-01
  • 增加了对search_date_start为空的处理:如果用户未输入开始日期,直接返回所有按日期排序的预约记录,避免between操作因参数缺失触发数据库错误
  • 拆分查询构建步骤,让代码结构更清晰,后续扩展筛选条件也更方便

前端提示优化(可选,index.html)

为了让用户更清楚留空结束日期的作用,可以在表单中补充提示文字:

<label for="end_date_filter">Choose an end date (leave blank for all future appointments):</label>
<input type="date" id="end_date_filter" name="end_date_filter" 
    min="2022-01-01"><br>

内容的提问来源于stack exchange,提问作者Brandon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:31:51