【问题标题】:How do I display current time using Python + Django?如何使用 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。

标签: python django google-app-engine


【解决方案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/$' 更改为 '^/$' 即可将根页面映射到您的时间函数。

【讨论】:

    猜你喜欢
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    相关资源
    最近更新 更多