在基本的 webpy 博客中使用日期时间或时间戳

Using datetime or timestamp with basic webpy blog

我一直在关注这个使用 Webpy 的基本博客设置:

http://webpy.org/src/blog/0.3

我的一切都完全一样,所以我认为我不需要 post 我的代码,但是我使用的是 Psql,因此我不得不对我的 model.py 进行一些更改如下:

import web
import datetime

db = web.database(dbn="postgres", db='basic_blog', user='my_name')

def get_posts():
    return db.select('entries', order='id DESC')

def get_post(id):
    try:
        return db.select('entries', where='id=$id', vars=locals())[0]
    except IndexError:
        return None

def new_post(title, text):
    db.insert('entries', title=title, content=text, posted_on=timestamp)

def del_post(id):
    db.insert('entries', where='id=$id', vars=locals())

def update_post(id, title, text):
    db.update('entries', where='id=$id', vars=locals(),
        title=title, content=text)

当我创建模式时,我无法使用 DATETIME,因为它似乎不在 psql 中,所以我改用 TIMESTAMP,但是我不确定如何让它在 model.py文件或者如果我仍然需要导入日期时间。

当我像上面那样尝试 运行 并转到本地主机中的 /new 时,我收到此错误消息:

global name 'timestamp' is not defined

我已经尝试将 psql 模式中的类型更改为 'date',但仍然遇到同样的问题并且不确定还能做什么。

您参数中的时间戳是您需要定义的变量。

def new_post(title, text):
    db.insert('entries', title=title, content=text, posted_on=timestamp)

所以改为:

import datetime

您可以:

import time

并在您的 new_post 函数中,在函数被调用时生成一个新的时间戳:

def new_post(title, text):
    timestamp = time.time() # define the variable: timestamp
    db.insert('entries', title=title, content=text, posted_on=timestamp)

注意:time.time() return一个可以表示毫秒的float对象,但如果你不关心毫秒,你可以用int(time.time())代替。