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

Django:如何根据日期在页面上展示用户输入日期对应的餐食数据

实现按日期筛选展示餐食的方案

步骤1:新增日期查询的URL路由

在你的URL配置文件中新增用于接收日期参数的路由:

# 支持传入YYYY-MM-DD格式的日期字符串
path('daily-meals/<str:date_str>/', views.daily_meals, name='daily_meals')

步骤2:新增按日期查询的视图函数

新增视图处理日期筛选逻辑,仅返回当前登录用户对应日期的餐食数据,避免越权访问:

from django.shortcuts import render, Http404
from datetime import datetime

@login_required
def daily_meals(request, date_str):
    # 校验日期格式合法性
    try:
        target_date = datetime.strptime(date_str, "%Y-%m-%d").date()
    except ValueError:
        raise Http404("无效日期格式,请使用YYYY-MM-DD格式访问")
    # 筛选当前用户、指定日期的所有餐食
    user_daily_meals = Meal.objects.filter(user=request.user, date=target_date)
    return render(request, 'meals/daily_meals.html', {
        'meal_list': user_daily_meals,
        'current_date': target_date
    })

步骤3:新增对应展示模板(示例)

创建meals/daily_meals.html模板渲染当日餐食列表:

<h2>{{ current_date }} 餐食记录</h2>
{% if meal_list %}
<ul>
  {% for meal in meal_list %}
  <li>
    <a href="{% url 'meal_details' meal.id %}">
      {{ meal.get_name_display }}
    </a>
  </li>
  {% endfor %}
</ul>
{% else %}
<p>该日期暂无餐食记录</p>
{% endif %}

可选扩展:默认展示当日餐食

如果需要默认打开页面就展示当天的餐食,可以新增无参数路由和对应的重定向视图:

  1. URL配置新增:
path('daily-meals/', views.today_meals, name='today_meals')
  1. 新增视图:
from datetime import date
from django.shortcuts import redirect

@login_required
def today_meals(request):
    today = date.today()
    return redirect('daily_meals', date_str=today.strftime("%Y-%m-%d"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:06:02