python - Django 中的 datetime.date.today()(Dash 应用程序)
问题描述
django-plotly-dash
我有一个使用该包在 Django 中运行的 Plotly Dash 应用程序。( https://django-plotly-dash.readthedocs.io/en/latest/ )
该应用程序在这里:https ://www.sunfire.xyz/data/tca
仪表板上有一个日期选择器,该元素的代码是这样的:
from datetime import date, datetime, timedelta
html.Div([
dcc.DatePickerRange(
id='date-picker-range',
min_date_allowed=date(2020, 10, 21),
max_date_allowed=date.today(),
initial_visible_month=date.today(),
start_date=date.today() - timedelta(days=7),
end_date=date.today(),
display_format='DD/MM/YYYY',
),
], className="plotly-datepicker"),
和max_date_allowed
默认值end_date
都应该是datetime.date.today()
(在我输入这个时是 11 月 1 日),但是它似乎today()
正在返回 django 应用程序启动的那一天。
事实上,现在它奇怪地设置max_date_allowed
为 10 月 31 日,但是end_date
是 10 月 30 日。如果我重新启动服务器,它会正常工作,并将显示 11 月 1 日。
date.today()
当应用程序运行多天时,如何正确显示今天的日期?
仅供参考views.py
,此应用程序的文件正在导入 Dash 应用程序from .dashapps import tca_log_plotter
解决方案
您遇到的问题是创建此 Plotly Dash 组件的代码仅在加载模块时执行一次(即“django 应用程序启动的那一天”)。您没有显示此实例化发生的位置,因此没有足够的信息来确定确切的原因。也许您已经将此组件定义分解为模块级变量以供重用?无论如何,解决方案是确保在每个请求上都调用日期选择器代码。
另外,使用 Django 的localdate()
函数,而不是date.today()
. 后者不考虑 Django 的设置(如TIME_ZONE
)。
推荐阅读
- java - 为什么 Java 声称 1.5 版本需要向后兼容?
- python - 居中和顶部对齐 QVBoxLayout
- python - 熊猫:`a < b` 的行为与 `a.lt(b)` 不同
- z3 - Z3/Z3py 中的传递闭包
- matlab - Matlab:如何为 AR 模型计算调整后的 R 平方
- python - 如何将列表列与熊猫中另一个数据框中的列匹配?
- c# - 如何使用c#查询从mongodb返回的json数组中的特定项目
- c# - 如何在游戏应用启动时初始淡入游戏?
- c++11 - 为什么需要一个 shared_from_this 而不是直接使用 this 指针?
- windows - 如何使用 Cygwin 版本的 find 而不是 Windows 版本