Попытка отформатировать Google App Engine DateTimeProperty для шаблона - PullRequest
2 голосов
/ 30 сентября 2010

Я использую фреймворк Tornado (Python) в GAE. Я все еще новичок во всей концепции MVC и GAE ... и, черт возьми, пытаюсь понять, как это сделать.

У меня есть таблица (модель) Пост с полями user, text, creation_date.

Я вытащил все посты в коде и затем отправил его в шаблон. Я хочу отформатировать поле creation_date, чтобы оно форматировалось немного лучше. Что-то вроде М-Д-Й. Я знаю, что использую strptime или strftime, чтобы отформатировать дату создания. Но я не уверен, как это сделать, прежде чем отправлять сообщения в шаблон.

Вот что я использую, чтобы получать сообщения и отправлять их в шаблон ...

class HomeHandler(BaseHandler):
    def get(self):
        posts = Post.all()
        posts.order("-creation_date")
        self.render('home.html', posts=posts)

UPDATE:

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 голосов
/ 30 сентября 2010

Если вы используете модуль шаблона Tornado, он включает в себя модуль datetime. Я не использовал шаблонный модуль Торнадо, но вы должны использовать:

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)

В вашем шаблоне постов будет список словарей, содержащих поля автора, темы и даты.

Используйте fetch, чтобы ограничить количество возвращаемых вами сообщений; это улучшит производительность, захватывая (до) 50 объектов одновременно вместо того, чтобы захватывать их меньшими партиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...