【问题标题】:Accessing javascript variables within Django HTML在 Django HTML 中访问 javascript 变量
【发布时间】:2021-01-09 07:42:41
【问题描述】:

我在 Django 的 Chart.js 中添加要包含在表单中的数据。我原来有:

home_data.push({x: "{{transaction.transaction_time.month}}/{{transaction.transaction_time.day}} {{transaction.transaction_time.hour}}:{{transaction.transaction_time.minute}}", y: {{transaction.price}}})

但是现在我想要做的是调整 transaction.transaction_time 值,为了做到这一点,我想将它分配给一个单独的变量,以便稍后获取该变量的值。这是我尝试做的:

var transaction_adjusted = {{transaction.transaction_time}}

home_data.push({x: "{{transaction_adjusted.month}}/{{transaction_adjusted.day}} {{transaction_adjusted.hour}}:{{transaction_adjusted.minute}}", y: {{transaction.price}}})

在我的控制台窗口中:我看到诸如 {{transaction_adjusted.month}} 之类的评估值为零。这是为什么呢?

【问题讨论】:

  • 可能值得查看 json_script 标记以将上下文变量传递给 JS docs.djangoproject.com/en/3.1/ref/templates/builtins/…
  • @IainShelvington 我不完全确定你的意思。我正在使用基于类的视图并使用 get_context_data 将值传递到 HTML(第一个代码 sn-p 完美运行)。你会如何建议在这里使用 json_script ?键值对会是什么?

标签: javascript html django django-models


【解决方案1】:

with 标签可用于分配一个新的上下文变量,作为函数调用或属性访问的结果

{% with transaction_adjusted=transaction.transaction_time %}
    var transaction_adjusted = {{transaction_adjusted}}

    home_data.push({x: "{{transaction_adjusted.month}}/{{transaction_adjusted.day}} {{transaction_adjusted.hour}}:{{transaction_adjusted.minute}}", y: {{transaction.price}}})
{% endwith %}

【讨论】:

  • 谢谢你,我真的很感激。我有一个类似的相关问题,我想知道你是否知道答案。 transaction_adjusted 的值是一个 python 日期时间对象。如果我想从中减去 5 个小时,最好的方法是什么?在 javascript 中处理 python 对象很困难。在终端中,日期时间对象看起来像一个字符串,格式为:“Jan. 8, 2021, 8:10 p.m.”
  • 在 Python 中,您将从日期时间对象中减去 datetime.timedelta 对象:datetime_obj - datetime.timedelta(hours=5) docs.python.org/3/library/datetime.html#timedelta-objects
  • 对,在脚本中呢?还是没有办法在html模板上的js脚本中做到这一点?
猜你喜欢
  • 2017-10-31
  • 2014-04-08
  • 1970-01-01
  • 1970-01-01
  • 2014-10-08
  • 1970-01-01
  • 2020-04-18
  • 2011-07-07
相关资源
最近更新 更多