【问题标题】:Is it better to use Django template tags or pass variables from python使用Django模板标签或从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 模板过滤器。

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


【解决方案1】:

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

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

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

<h1>{% now "l d F H:i" %}</h1>

【讨论】:

  • @RuthYoung:没问题。顺便说一句,我认为日期格式字符串应该是"l d F H:i",其中“m”(一年中的月份)被“d”(月份中的一天)替换。
猜你喜欢
  • 2021-02-15
  • 2019-07-31
  • 2014-03-04
  • 1970-01-01
  • 2015-06-22
  • 2012-09-27
  • 1970-01-01
  • 2020-04-24
  • 2018-12-20
相关资源
最近更新 更多