如何使用 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 中,直到它必须将其呈现给用户。这就是转换发生的地方。模板标签如now
does这个automatically。【参考方案3】:
使用now template tag。例如:
% now "jS F Y H:i" %
但您需要先通过模板引擎发送您的字符串,然后才能发送响应以使其正常工作。
【讨论】:
如何在不刷新页面的情况下保持更新时间? @Jeff Django 不会动态更新页面上的内容,因此您可能需要为此使用 javascript。【参考方案4】:您可以使用time.strftime() 打印当前时间。在您的 urlpatterns 中,只需将 '^time/$'
更改为 '^/$'
即可将根页面映射到您的时间函数。
【讨论】:
以上是关于如何使用 Python + Django 显示当前时间?的主要内容,如果未能解决你的问题,请参考以下文章
通过 Django 将 Python 数据传递给 JavaScript
如何使用当前登录用户作为 Django DetailView 的 PK?