Python 除非重新启动flask服务器,否则条目上的默认datetime.now值不会更改

Python 除非重新启动flask服务器,否则条目上的默认datetime.now值不会更改,python,datetime,flask,flask-sqlalchemy,pytz,Python,Datetime,Flask,Flask Sqlalchemy,Pytz,我注意到,当我在表格页面中提交条目时,除非重新启动,否则输入的日期将在随后的提交中重复。为什么会这样?我发誓重复的时间相隔几分钟,但提交的时间似乎只是从服务器重新启动开始。我也在使用炼金术 models.py class Entry(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(200), unique=True, nullable=False) d

我注意到,当我在表格页面中提交条目时,除非重新启动,否则输入的日期将在随后的提交中重复。为什么会这样?我发誓重复的时间相隔几分钟,但提交的时间似乎只是从服务器重新启动开始。我也在使用炼金术

models.py

class Entry(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(200), unique=True, nullable=False)
    date_input = db.Column(db.DateTime, nullable=False, default=datetime.now(tz=pytz.timezone('Asia/Manila')))

请注意固定默认值和默认函数(在需要时提供值)之间的差异。显示了带有
datetime.now
的示例

您当前的代码可以重写为:

dt = datetime.now(tz=pytz.timezone('Asia/Manila')) # evaluated once
date_input = db.Column(db.DateTime, nullable=False, default=dt)
要修复代码,请用函数替换表达式,例如
default=lambda:datetime.now(tz=…)

Actual POST logs (copy-pasted from cli)

 1. 127.0.0.1 - - [09/May/2020 01:00:55]
 2. 127.0.0.1 - - [09/May/2020 01:09:25]
 3. 127.0.0.1 - - [09/May/2020 01:14:49]
 4. 127.0.0.1 - - [09/May/2020 01:18:07]
 5. 127.0.0.1 - - [09/May/2020 01:21:39]
 6. 127.0.0.1 - - [09/May/2020 01:23:46]
 7. 127.0.0.1 - - [09/May/2020 01:25:14]
 8. 127.0.0.1 - - [09/May/2020 01:25:14]
 9. 127.0.0.1 - - [09/May/2020 01:25:56]
Server restarts
-I took the timestamps from the first GET result after running the server. 
 The initial running itself doesnt have time indicated

 1. 127.0.0.1 - - [09/May/2020 00:59:11]
 2. 127.0.0.1 - - [09/May/2020 01:09:25]
 3. 127.0.0.1 - - [09/May/2020 01:10:50]
 4. 127.0.0.1 - - [09/May/2020 01:23:31]
dt = datetime.now(tz=pytz.timezone('Asia/Manila')) # evaluated once
date_input = db.Column(db.DateTime, nullable=False, default=dt)