使用模板的Django的时区感知日期时间

2024-04-30 00:32:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在django解决一个小问题,但我还没有完全弄清楚。我有一个django应用程序在godaddy vps上运行视图.py我把这些行作为函数定义的一部分

    currtime=datetime.datetime.now()
            return render_to_response('test.html',{'currtime' : currtime })

现在在我的测试.html,im使用模板获取currtime

^{pr2}$

我相信django中时区感知的datetime对象的要点是在通过模板呈现HTML时自动将时间转换为本地时间。。正如您在上面看到的,我已经加载了pytz库并启用了localtime。。。即使我在印度,我仍然得到一个当前的时间值,这个值和德克萨斯州的时间是一样的。 我想让它工作的原因是,我有一个数据库,日期时间存储在UTC,我希望时间显示在本地时间(即从UTC转换为本地时间)基于用户的地理位置。 任何帮助都将不胜感激,谢谢。在


Tags: django函数py视图模板应用程序datetime定义
1条回答
网友
1楼 · 发布于 2024-04-30 00:32:25

我只是无意中在谷歌上搜索了一个相关的问题,但我想我会回答的,以防有人发现它。。。在

你所追求的不起作用,因为localtime意味着服务器上的本地时间(用您的设置中定义的时区表示)。服务器上运行的django应用程序无法确定客户端的时区。您应该在浏览器中检测时区,例如使用jstz。在

一个更可靠的解决方案是让用户选择自己的时区,同时也可以使用自动检测来设置选择(这样大多数时候他们就可以按OK)。当然,您可以将其存储在服务器上,从那时起,您可以使用用户的时区生成模板:

{% loadtz %}
{% timezone user.timezone %}
.....
{% endtimezone %}

相关问题 更多 >