尝试为模板格式化Google App Engine的DateTimeProperty
我正在使用Tornado框架(Python)在GAE上。对于MVC的概念和GAE,我还算是个新手……现在遇到了一些麻烦,想弄明白该怎么做。
我有一个表(模型)叫做Post,里面有用户、文本和创建日期这几个字段。
我在代码中提取了所有的帖子,然后把它们发送到模板中。我想把创建日期这个字段格式化得更好看一些,想要类似M-d-Y的格式。我知道可以用strptime或strftime来格式化创建日期,但我不太确定在把帖子发送到模板之前该怎么做。
这是我用来获取帖子并发送到模板的代码……
class HomeHandler(BaseHandler):
def get(self):
posts = Post.all()
posts.order("-creation_date")
self.render('home.html', posts=posts)
更新:
posts = Post.all().order("-creation_date").fetch(50)
posts = [{'text': post.text} for post in posts]
for post in posts:
print post.text
我收到的错误信息:
AttributeError: 'dict'对象没有'text'这个属性
1 个回答
2
假设你正在使用Tornado的模板模块,它里面包含了日期时间的功能。我虽然没有用过Tornado的模板模块,但你应该可以这样使用:
entity.datetime_property.strftime('%m-%d-%y')
如果你想在把数据发送到模板之前先处理一下你的模型,可以试试下面的方式:
class HomeHandler(BaseHandler):
def get(self):
posts = Post.all().order("-creation_date").fetch(50)
posts = [{'author': post.author,
'subject': post.subject,
'date': post.date} for post in posts]
self.render('home.html', posts=posts)
在你的模板中,posts会是一个字典的列表,这些字典里包含了作者、主题和日期等字段。
使用fetch可以限制你返回的帖子数量;这样做可以提高性能,因为它一次最多可以获取50个数据,而不是分批获取。