我一直在使用Webpy跟踪这个基本的博客设置:
我的一切都完全相同所以我认为没有必要在这里发布我的代码,但是我使用的是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',但仍然遇到同样的问题,不知道还能做什么。
答案 0 :(得分:1)
参数中的时间戳是您需要定义的变量。
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()
会返回float
对象,该对象可能代表毫秒,但如果您不关心毫秒,则可以使用int(time.time())
代替。