是否更好地使用Django模板标签或从python传递变量

时间:2017-04-12 11:09:34

标签: python django django-templates django-template-filters

我在Django模板上显示日期,我有一个python函数,它为我今天格式化日期并将其传递给我的模板。

# function [format example: Wednesday 01 February 10:00:00]
def today():
    date_now = datetime.now()
    day_number = date_now.strftime("%d")
    month_name = date_now.strftime("%B")
    day_name = date_now.strftime("%A")
    time = date_now.strftime("%X")
    date = "{} {} {} {}".format(day_name, day_number, month_name, time)
    return date

# view
def myview(request):
    the_date_today = today()
    context = {
        "the_date_today": the_date_today,
    }
    return render(request, "template.html", context)

# template
<h1>{{ the_date_today }}</h1>

我刚刚找到了一种使用Django模板标签的方法。

# view
def myview(request):
    the_date_today = datetime.now()
    context = {
        "the_date_today": the_date_today,
    }
    return render(request, "template.html", context)

# template
<h1>{{ the_date_today|date:"l m F H:i" }}</h1>

对此更好的方法是什么?使用模板过滤器的代码要少得多,但是这会使速度变慢吗?

1 个答案:

答案 0 :(得分:3)

模板方法更好。它不会慢。

如果以后需要修改显示格式,只需修改模板而不是代码即可。

更重要的是,您甚至不需要将order by的值传递给模板,因为您可以在模板中调用now

the_date_today