【问题标题】:Within Django, how can I turn my Python datetime string into a Javascript Date object?在 Django 中,如何将我的 Python 日期时间字符串转换为 Javascript 日期对象?
【发布时间】:2017-01-14 11:58:55
【问题描述】:

我正在尝试从 Django 中的 JSON 数据 -> Javascript Date 对象。

目前,我已经对其进行了设置,以便我有一个函数可以访问 API 并将 JSON 数据保存到我的模型对象之一中。
编辑:JSON 日期时间字符串如下所示:'2017-01-14 14:00:00'

然后在我的视图中,我将查询包含 JSON 的对象,并将从 JSON 获取的日期时间字符串作为上下文变量发送到我的模板。

在模板中,我尝试使用 Google Chart 绘制字符串数据,而 Google Charts 要求折线图的第一列是 JS 日期对象。如何将已发送的模板变量:{{ date }} 转换为等效于 Javascript 的格式

new Date(2017, 01, 14)  

以便它可以与 Google 图表一起使用?

edit:问题不是我不知道如何格式化字符串,而是我不知道如何让字符串首先出现,因为它首先是一个 django 模板变量。

【问题讨论】:

  • 如果你需要做js数据操作,我强烈推荐你使用DRF django-rest-framework.org
  • @Wtower 我的理解是 DRF 用于创建您自己的 API。您能否指出 DRF 中的特定领域/主题,我可以阅读有关我要解决的问题的内容?
  • 您将收到的只是字符串,因此您必须手动将其转换为Date。请参阅此问题和答案,例如:stackoverflow.com/questions/5619202/…
  • @Simonster 我不能。为了使用它,您需要投入时间。我的建议并非针对您的问题,因为 sdolan 的回答很好。但是,如果您打算对后端进行大量 json 查询,那么 drf 是 imo 必须的。

标签: javascript python json django


【解决方案1】:
new Date({{ value|date:"U" }} * 1000)  

将 Django 模板变量 datetime 对象转换为 unix 时间戳,这是创建 JS Date 对象的可接受参数。
乘以 1000 以检索秒值。

【讨论】:

  • 真是天才!!我只是浪费了两天的时间试图弄清楚这一点!谢谢!
  • Date 对象从何而来?这是 Python 还是 JS 代码?
  • 如果您能更好地解释您的代码,那将非常有帮助 - value 是什么? date 是什么?使用此代码并尝试将两者都替换为 Django 返回的内容,但代码无法运行
  • @Elendurwen value 是模板变量, date 是 django 模板过滤器。所以在这种情况下 value 是你从 python 传递到 html 或 javascript 文件的变量名。并且 date 只是一个内置的 django 过滤器,所以需要导入或有任何库来使用它。
  • @Elendurwen 下面是一个例子:Main.py: todays_date = datetime.datetime.today().date() render_with_rc('timesheet/roster.html', request, today_date) MyPage.html: <script type='text/javascript'> var sundayDate = new Date({{ todays_date|date:"U" }} * 1000); </script>
【解决方案2】:
# general python datetime stringformatting:

>>> import datetime
>>> d = datetime.datetime.now()
>>> d.strftime("%Y-%m-%d %H:%M:%S")
'2017-01-14 05:04:26'

# you can embed other chars to fake the js date constructor
>>> d.strftime("new Date(%Y, %m, %d)")
'new Date(2017, 01, 14)'

查看文档@https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior

【讨论】:

    猜你喜欢
    • 2022-07-20
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 2015-03-24
    • 1970-01-01
    相关资源
    最近更新 更多