【发布时间】:2020-09-03 22:59:28
【问题描述】:
我正在尝试制作一个小算法来在包含三个横幅的容器内显示广告,但不是一次显示所有横幅,我想每天只显示一个。
假设每个横幅都必须在特定日期时间出现,如下所示:
ads = [
{
'banner': f'{ads_path}/1/ad_1917_175.gif',
'dtime': datetime.now() + timedelta(minutes=1)
},
{
'banner': f'{ads_path}/2/ad_1917x175.gif',
'dtime': datetime.now() + timedelta(minutes=2)
},
{
'banner': f'{ads_path}/3/ad_1917x175_2.gif',
'dtime': datetime.now() + timedelta(minutes=3)
}
]
所有横幅都保存在数据库中,我可以通过它的偏移量过滤每个横幅,我还创建了一个 datetime.now() 变量以将其与查询中的 dtime 进行比较,如下所示:
dtime_now = datetime.now()
get_banner = Ads.query.filter(Ads.dtime < dtime_now).offset(1).limit(1)
我想从这里开始,如果数据库中的所有日期都小于当前时间,则迭代将转到第一个横幅。
dtimes = [datetime.strptime(str(item.dtime), '%Y-%m-%d %H:%M:%S.%f') for item in get_ads]`
我尝试将所有 dtimes 的列表合并到一个 datetime 对象中,然后查看结果是否小于当前时间,这意味着转到第一个横幅更改它 dtime 并显示它等等。
但 Python 不会让你这样做,因为它只是结合了 timedelta。
有什么建议可以让它发挥作用吗?最好的方法是什么?
【问题讨论】:
标签: python-3.x flask flask-sqlalchemy