Объект существует, пустой шаблон возвращается - PullRequest
0 голосов
/ 25 июня 2010

Я получил следующий очень простой шаблон:

<html>
<head>
</head>
<body>

<div>
<!-- Using "for" to iterate through potential pages would prevent getting empty strings even if only one page is returned because the "page" is not equal the query, it is a subcomponent of the query -->
<div>{{ page.name }}</div>
<div>{{ page.leftText }}</div>
<div>{{ page.imageURL }}</div>
<div>{{ page.rightText }}</div>
</div>

</body>
</html>

И самая базовая модель:

class Page(db.Model):
 name = db.StringProperty(required=True)
 leftText = db.TextProperty()
 rightText = db.TextProperty()
 imageURL = db.LinkProperty()

И самые основные обработчики:

class BaseRequestHandler(webapp.RequestHandler):
    #######
class PageContentLoadRequestHandler(BaseRequestHandler):

 def renderPage(self, values):
  directory = os.path.dirname(__file__)
  path = os.path.join(directory, 'templates', 'simple_page.html')
  return template.render(path, values, True)

 def get(self):
  page = db.get('aghwc21vZWJlbHIKCxIEUGFnZRgBDA')
            #alternative code
            # page db.get(db.key(self.request.get('key')))
            # The solution is to call/fetch the wanted object/query
  data = page.get() # or ... = Page.gql("GQL CODE").fetch(1)
  values = {'page': page}
  template_name = "simple_page.html"
  return self.response.out.write(self.renderPage(values))

Ключ просто случайно вынимается из моего хранилища, это реально существующий ключ заполненной сущности. Идея состоит в том, чтобы динамически загружать содержимое страницы в документ через AJAX, проблема в том, что этот обработчик возвращает пустой шаблон. Нет ошибок, 200 HTTP-код, ключ существует и т. Д. И т. Д. Я совершенно сломлен и немного раздражен такими проблемами, потому что я тихо не знаю, где может быть ошибка.

С уважением,

РЕДАКТИРОВАТЬ: изменив значения шаблона на правильные имена, я теперь получаю следующую ошибку:

    values = {'page': page, 'name': page.name,}
AttributeError: 'NoneType' object has no attribute 'name'

1 Ответ

2 голосов
/ 25 июня 2010

Ваши свойства называются leftText, rightText и imageURL, но вы пытаетесь распечатать left_text, right_text и image_url. Django в своей бесконечной мудрости просто возвращает пустую строку, когда вы пытаетесь получить доступ к несуществующему свойству, вместо того, чтобы вызывать исключение.

...