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

Django实现筛选10周岁及以上用户并在HTML展示的方法

实现Django筛选10周岁及以上用户并展示

1. 视图层筛选逻辑

要精准筛选出满10周岁(含当天)的用户,需计算当前日期往前推10年的节点,只要用户出生日期小于等于该节点即符合条件。以下是ORM筛选逻辑:

from datetime import datetime, timedelta
from django.shortcuts import render
from .models import User  # 替换为你的实际模型类名

def eligible_users(request):
    # 计算10年前的当日日期(忽略时间部分,避免时间差导致筛选遗漏)
    cutoff_date = datetime.today() - timedelta(days=365*10)
    # 筛选非空出生日期且日期部分小于等于 cutoff 的用户
    eligible_users = User.objects.filter(
        date_of_birth__isnull=False,
        date_of_birth__date__lte=cutoff_date.date()
    )
    return render(request, 'eligible_users.html', {'users': eligible_users})

补充:若需更精准处理闰年,可安装python-dateutil库后用relativedelta替代timedelta,代码改为:from dateutil.relativedelta import relativedelta; cutoff_date = datetime.today() - relativedelta(years=10),自动适配闰年天数差异。

2. 模板层展示

创建HTML模板eligible_users.html,循环渲染符合条件的用户:

<!DOCTYPE html>
<html>
<head>
    <title>10周岁及以上用户列表</title>
</head>
<body>
    <h1>10周岁及以上用户</h1>
    {% if users %}
        <ul>
            {% for user in users %}
                <li>{{ user.username }} - 出生日期:{{ user.date_of_birth|date:"Y-m-d" }}</li>
            {% endfor %}
        </ul>
    {% else %}
        <p>暂无符合条件的用户</p>
    {% endif %}
</body>
</html>

说明:用|date:"Y-m-d"过滤器格式化日期,优化展示可读性;若项目启用时区,需替换datetime.today()为django.utils.timezone.now(),确保时间计算符合项目时区配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 04:57:22