Django按日期分页(周)

Posted

技术标签:

【中文标题】Django按日期分页(周)【英文标题】:Django pagination by date (week) 【发布时间】:2021-05-21 23:20:05 【问题描述】:

我正在制作一个网站,显示从您打开网站之日到六天后(当前周)这周的足球比赛,我想按日期分页。

例如<previous> <19 feb - 25 feb> <next> 然后当我按下下一个<previous> <26 feb - 4 march> <next>


在views.py中。

matches 是一个字典列表,每个字典是一个单独的游戏,包含游戏的日期和其他信息,并按日期排序

def home(request):
start = datetime.now().date()
end = today + timedelta(6)

matches = request_games(today, after_week)

return render(request, "sporty/home.html",
    "matches": matches,
    "start" : start,
    "end": end
    )

在 home.html 中

% for match in matches %
    //match info
% endfor %

【问题讨论】:

你有什么问题? 我的问题是如何按周分页,一旦我打开网站显示从那天到一周后的比赛,然后当你按下一步时,你会进入下一周的比赛,所有比赛都存储在字典 【参考方案1】:

为了让您创建不同周的集合,也许是整个赛季,您需要创建另一个字典,其中包含您创建的匹配字典,并在分页时访问每个“匹配”字典。

那么此时您需要通过单选按钮或一些 javascript 函数来确定要查看的字典。下面的链接讨论了使用 javascript 和 django 的正确方法,虽然您不能在 django 模板中使用 javascript 变量,但您可以使用 ajax 解决它。

use javascript variable in django template

您还可以为每个匹配字典创建一个 div 元素。然后,在您的 css 文件中,将每个元素设置为 display:none。然后,您可以从 javascript 访问该元素并更改 div 元素的显示,以便在按下某个按钮时显示它。

function changeGames()
   document.getElementById('div1').style.display= 'block' ;
   document.getElementById('div2').style.display= 'none' ;

【讨论】:

以上是关于Django按日期分页(周)的主要内容,如果未能解决你的问题,请参考以下文章

iOS Firebase 按日期分页

如何在 django 中按日期范围过滤记录?

分页尝试转到第 2 页时不显示结果(按名称和日期过滤结果)

Django 按时间过滤日期时间字段,与日期无关

Django:按日期过滤日期时间忽略时间

Django:按日期范围过滤对象