使用Django模板标签或从python传递变量更好吗
Posted
技术标签:
【中文标题】使用Django模板标签或从python传递变量更好吗【英文标题】:Is it better to use Django template tags or pass variables from python 【发布时间】:2017-09-08 03:18:38 【问题描述】:我在 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>
对此有什么更好的方法?仅使用模板过滤器的代码要少得多,但这是否会使任何事情变慢?
【问题讨论】:
模板过滤器不会让你的应用变慢。无论如何,在幕后这些都是python函数。最好将演示文稿保留在模板中,因此我建议为此使用标准的 Django 模板过滤器。 【参考方案1】:模板方法更好。它不会变慢。
如果以后您需要修改显示格式,您只需修改模板而不是代码即可。
更重要的是,您甚至不需要将the_date_today
的值传递给模板,因为您可以在模板中调用now
:
<h1>% now "l d F H:i" %</h1>
【讨论】:
@RuthYoung:没问题。顺便说一句,我认为日期格式字符串应该是"l d F H:i"
,其中“m”(一年中的月份)被“d”(月份中的一天)替换。以上是关于使用Django模板标签或从python传递变量更好吗的主要内容,如果未能解决你的问题,请参考以下文章
如何在 django 模板标签中传递 Javascript 变量