【问题标题】:Django Timezone Support Outside of Templates模板之外的 Django 时区支持
【发布时间】:2013-07-17 21:49:41
【问题描述】:

Django 的时区感知输出显然是only applies when rendering a template。有没有办法为返回 CSV 或 JSON 的响应自动转换为当前活动的时区?

【问题讨论】:

  • 您在寻找 django 设置吗?或者一些python特定的代码?也许尝试使用 pytz?
  • 不,当我向用户发送 CSV 或 JSON 响应时,我希望获得与您在模板中看到的相同的自动转换行为。
  • 我不相信模板之外有任何自动转换...您必须手动进行。
  • 是的,这就是我发现的。知道在模板上运行的逻辑发生在哪里吗?显然我可以通过模板呈现 CSV 和 JSON,但这很糟糕。
  • 在这里遇到了完全相同的问题,感谢您的提问。太糟糕了,它不被支持,尤其是现在的现代动态/javascript应用程序。

标签: django timezone django-timezone


【解决方案1】:

看来在模板中转换日期时间的底层函数是django.utils.timezone.template_localtime()。源代码中它旁边是另一个实用函数localtime,它看起来像:

def localtime(value, timezone=None):
    """
    Converts an aware datetime.datetime to local time.

    Local time is defined by the current time zone, unless another time zone
    is specified.
    """
    ...

所以也许以下方法会起作用:

from django.utils.timezone import localtime, get_current_timezone

...

print localtime(obj.date_created, user.get_profile().timezone or get_current_timezone())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 2018-12-28
    • 2020-11-27
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多