2014-01-06 2 views
2

Я видел похожие вопросы, заданные по той же теме, которая кодирует очень простой блог с Python и размещается на GAE. Извиняюсь, если я пропустил решение в одном из ответов.Простой блог в Google App Engine - нет записей, отображаемых

Я вообще не вижу никаких записей в базе данных. Вот мой код:

Entity:

class Comment(db.Model): 
    name = db.StringProperty(required=True) 
    comment = db.TextProperty(required=True) 
    created = time.strftime("%d/%m/%Y") 

Главная Handler:

class MainPage(Handler): 
    def render_front(self, name="", comment="", error=""): 
     comments = db.GqlQuery("SELECT * FROM Comment ORDER BY created DESC") 
     self.render("front.html", name=name, comment=comment, error=error, comments=comments) 
    def get(self): 
     self.render_front() 
    def post(self): 
     name = self.request.get("name") 
     comment = self.request.get("comment") 
     if name and comment: 
      c = Comment(name=name, comment=comment) 
      c.put() 
      time.sleep(0.5) 
      self.redirect("/") 

Так это будет отображаться в HTML:

{% for e in comments %} 
    <div class="comment"> 
     <div class="comment-name"> 
      {{e.name}} 
     </div> 
     <pre class="comment-content"> 
      {{e.comment}} 
      <br> 
      on {{e.created}} 
     </pre> 
    </div> 
{% endfor %} 

Проблема заключается в том, что программа кажется, полностью игнорирует выше для блока. Мне удалось заставить его работать некоторое время, но я проверил его много раз и не вижу, где проблема.

Любая помощь будет оценена по достоинству. Заранее спасибо.

+0

Как вам удалось заставить его работать? Также вы проверяли файл журнала App Engine на наличие ошибок? Это обычно по крайней мере указывает на то, что вы в правильном направлении. – Totem

+0

Несколько способов проверить это: –

ответ

3

Несколько способов проверить через это:

  • Используйте консоль администратора, чтобы посмотреть на вашу Datastore. У вас есть записи?

  • Сохраняются ли ваши свойства datetime правильно? Для документов в DS и Datetime см. Здесь: https://developers.google.com/appengine/docs/python/datastore/typesandpropertyclasses#DateTimeProperty

  • Вы создали дату типа 'dateTimeProperty'? См. Пример здесь: developers.google.com/appengine/docs/python/ndb/queries См. Также здесь: stackoverflow.com/questions/9700579/gql-select-by-date

  • Попробуйте удалить предложение ORDER BY в вашем GQL. Мне интересно, есть ли что-то напуганное с переменной даты/времени.

  • Попробуйте выполнить локальную работу с помощью SDK App Engine и используйте журналы, чтобы увидеть поведение. Когда вы счастливы, что все работает, вы можете загрузить его в GAE.

  • Не используйте шаблонный двигатель - теперь просто сделайте цикл полностью в Python - и self.response.write вне. Это скажет вам, правильно ли работает ваш запрос.

Надеюсь, что это сработает для вас! :)

+1

Спасибо Laurence. Так что в Хранилище данных действительно были записи. Удаление предложения ORDER BY заставило его работать. По какой-то причине, когда я добавляю его в запрос, ничего не отображается. Если я изменил созданный на created = db.DateProperty (auto_now_add = True) и заменил GQL на: comments = Comment.all(). Order ('- created'), он все равно не работает. –

+0

Вы создали дату типа dateTimeProperty? См. Пример здесь: https://developers.google.com/appengine/docs/python/ndb/queries См. Также здесь: http://stackoverflow.com/questions/9700579/gql-select-by-date –

+0

Смена его на «DateTimeProperty» действительно работает. Теперь я могу отображать все комментарии в порядке убывания.Еще раз спасибо (и за полезные ссылки)! –

Смежные вопросы