python - 狗书中的用户资料一章,User模型的注册时间member_since属性每次本地调试时发生变化是什么原因?
PHP中文网
PHP中文网 2017-04-18 09:44:05
0
1
373

先贴上相关代码,就是狗书的源码
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中文网
PHP中文网

认证高级PHP讲师

membalas semua(1)
洪涛

Kod berikut hendaklah ditulis dalam templat pemaparan
Saya tidak tahu rupa kod poster asal, sebaiknya siarkan dan lihat

<p>Member since {{ moment(user.member_since).format('L') }}.Last seen {{ moment(user.last_seen).fromNow() }}.</p>

PS: Selepas perbincangan dan bertukar-tukar dengan poster asal, saya mendapati bahawa ia sepatutnya berada dalam model. Ahli atribut telah ditambahkan pada pangkalan data selepas pengguna dibuat, jadi tiada data di dalamnya dan semasa pemaparan sebelumnya. , member_since telah ditambahkan pada model = Fungsi datetime.utcnow db.Column(db.DateTime(), default=datetime.utcnow) telah dicetuskan dan tarikh telah dimuat semula, tetapi ia tidak dimasukkan ke dalam pangkalan data oleh db. session.add, menyebabkan datetime dicetuskan setiap kali anda log masuk. Fungsi .utcnow, jadi ia adalah tarikh terkini setiap kali.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!