2010-06-25 55 views
0

我得到了以下非常基本的模板:實體存在,則返回空模板

<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' 

回答

2

你的屬性稱爲 'leftText', 'rightText' 和「IMAGEURL ',但你正在嘗試打印'left_text','right_text'和'image_url'。當Django嘗試訪問不存在的屬性時,Django以其無限的智慧簡單地返回一個空字符串,而不是拋出異常。

+0

我收到一個「新」的錯誤,見上文。 – 2010-06-25 14:09:26

+3

你的新問題是由代碼中'page'爲'None'引起的,這意味着你實際上並沒有從你的'db.get()'調用返回一個'Page'。 – 2010-06-25 14:14:41

+0

最後,我得到了整件事情,我想我沒有集中精力,偶然發現了一些「錯別字」和較小的結構錯誤。 感謝您的支持。 – 2010-06-25 14:59:18