先贴上相关代码,就是狗书的源码
app/models.py
class User(UserMixin, db.Model):
member_since = db.Column(db.DateTime(), default=datetime.utcnow)
last_seen = db.Column(db.DateTime(), default=datetime.utcnow)
def ping(self):
self.last_seen = datetime.utcnow()
db.session.add(self)
app/auth/views.py
@auth.before_app_request
def before_request():
if current_user.is_authenticated:
current_user.ping()
代码是在本地测试的,我是9月份的时候添加的3个用户,但发现每次run,用户资料页的member_since值都会刷新成当天的日期,last_seen值倒是没问题。请问是哪里出问题了?
PHP中文网2017-04-18 09:46:05
渲染模板裡面應該是寫成如下程式碼
不知道樓主的程式碼裡面是怎麼樣的,最好貼出來看下
<p>Member since {{ moment(user.member_since).format('L') }}.Last seen {{ moment(user.last_seen).fromNow() }}.</p>
PS:經過和樓主的討論交流,發現應該是models裡面,member_since這個屬性加入資料庫的時間,是在創建用戶之後,所以導致裡面一直沒有數據,而前段渲染的時候又導致了模型內member_since = db .Column(db.DateTime(), default=datetime.utcnow)的datetime.utcnow函數被觸發,刷新了日期,但是又沒有被db.session.add進資料庫,導致最後每次登陸都會觸發一次datetime.utcnow函數,所以每次都是最新日期。