在模板中的django中实现倒计时

Implementing countdown in django in template

我有一个 bootstrap 模板,其中已经实现了倒计时。时间是硬编码的,如下所示。

<div  data-countdown="2020/03/01"></div>

在这里,如果我将数字更改为 2020,它会显示计算的时间。但我不想要这个硬编码的时间或数字。我想从我的 DateTime 字段中输入我的实际时间。那么如何将我的 DateTime 变量作为模板变量,并将其作为上面 data-countdown 属性的参数呢?就像我们对 {{}} 所做的那样。

您可以将日期时间字段中的日期放入呈现此页面的视图的上下文中,并使用 {{}}

在模板中访问它们
def some_view(request):
    # get your dates here, assuming from some model object
    date = "some date you got"
    return render(request, 'app/template_name.html', {'countdown_date': date}

在模板中

<div data-countdown="{{countdown_date}}"></div>

像这样使用 django 模板过滤器

<div data-countdown="{{ datetime_from_context|date:"Y/m/d" }}"></div>

如果您想更改格式,请使用此作为参考: https://simpleisbetterthancomplex.com/references/2016/06/21/date-filter.html

假设您的 DateTimeField 的值为 datetime.datetime(2020, 1, 28, 12, 36, 56, 310538)。因此,您可以通过以下方式获取视图中的日期:

def your_view(request):
    some_date_time_obj = datetime.datetime(2020, 1, 28, 12, 36, 56, 310538)
    date_from_date_time = some_date_time_obj.date() # will return datetime.date(2020, 1, 28)
    return render(request, 'your_template.html', {'date': data})

在您的模板中,您可以通过以下方式设置该值:

<div  data-countdown="{{ date }}"></div>

如果你想要 YYYY/MM/DD 格式的日期,那么你可以像这样调用 strftime() 方法:

date_from_date_time = some_date_time_obj.date().strftime('%Y/%m/%d') # will return '2020/01/28'