如何使用 Python + Django 显示当前时间?

Posted

技术标签:

【中文标题】如何使用 Python + Django 显示当前时间?【英文标题】:How do I display current time using Python + Django? 【发布时间】:2011-07-03 21:06:43 【问题描述】:

我正在学习如何使用 Python 和 Django 生成一个打印当前时间的小型 webapp。我将它与 Google App Engine 一起使用。

现在它只显示一个空白页,但我希望它显示当前时间。我也想把函数映射到主页..不是/time/。

from django.http import HttpResponse
from django.conf.urls.defaults import *
import datetime

# returns current time in html
def current_datetime(request):
    now = datetime.datetime.now()
    html = "<html><body>It is now %s.</body></html>" % now
    return HttpResponse(html)

def main(): 
    # maps url to current_datetime func
    urlpatterns = patterns('',
        (r'^time/$', current_datetime),
    )

if __name__ == '__main__':
  main()

【问题讨论】:

你在学习任何类型的教程吗? 没有任何具体的教程,我只是从不同的地方抓东西,并试图了解如何使用 Django 编写一个小型 webapp。 【参考方案1】:

对于 Django 代码,不在模板中的支持其实很简单。

在设置中更改时区:

TIME_ZONE = 'Asia/Kolkata'

以及需要用到的地方,使用如下代码:

from django.utils import timezone
now = timezone.now()

来源:https://docs.djangoproject.com/en/2.1/topics/i18n/timezones/

【讨论】:

不太那么简单。当时区支持为enabled (TZ_INFO=True) 时,timezone.now() 以UTC 返回时间,但当using now 时,它会在模板中转换为本地时间。 您可以通过 timezone.localtime(timezone.now()) 查看本地时间【参考方案2】:

也许这个文档对你有用:Time Zones

在视图中格式化时间

您可以使用以下方法获取当前时间:

import datetime
now = datetime.datetime.now()

根据时区获取时间:

import datetime
from django.utils.timezone import utc

now = datetime.datetime.utcnow().replace(tzinfo=utc)

格式化你可以做的时间:

import datetime

now = datetime.datetime.now().strftime('%H:%M:%S')  #  Time like '23:12:05'

在模板中格式化时间

您可以向模板发送一个日期时间,假设您从视图向模板发送一个名为 myDate 的变量。你可以这样做来格式化这个日期时间:

 myDate | date:"D d M Y"  # Format Wed 09 Jan 2008
 myDate | date:"SHORT_DATE_FORMAT"  # Format 09/01/2008
 myDate | date:"d/m/Y"  # Format 09/01/2008

查看Template filter date

希望对你有用

【讨论】:

您引用的Time zones 页面建议启用时区支持。在这种情况下,正确的方法是timezone.now()。关于“根据时区获取时间”,您很可能是指“以 UTC 获取时间”。这就是timezone.now() 所做的。说到这一点,timezone.now() 返回 UTC 时间的事实是违反直觉的。至少乍一看。 ...在第二个,您可能会意识到发生这种情况是因为 Django 将时间保持在 UTC 中,直到它必须将其呈现给用户。这就是转换发生的地方。模板标签如nowdoes这个automatically。【参考方案3】:

使用now template tag。例如:

% now "jS F Y H:i" %

但您需要先通过模板引擎发送您的字符串,然后才能发送响应以使其正常工作。

【讨论】:

如何在不刷新页面的情况下保持更新时间? @Jeff Django 不会动态更新页面上的内容,因此您可能需要为此使用 javascript【参考方案4】:

您可以使用time.strftime() 打印当前时间。在您的 urlpatterns 中,只需将 '^time/$' 更改为 '^/$' 即可将根页面映射到您的时间函数。

【讨论】:

以上是关于如何使用 Python + Django 显示当前时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改我的 django 服务器时间

通过 Django 将 Python 数据传递给 JavaScript

如何在 Django 模板中显示当前年份?

如何使用当前登录用户作为 Django DetailView 的 PK?

Python:Django:我如何找到用户的纬度和经度,以便我可以显示用户的位置?

Python - 如何在 django 模板中为所有值并排显示两个键的字典值