1
我只是測試GAE上顯示圖像,我有這個小的.py顯示圖像形成數據存儲
import cgi
import wsgiref.handlers
from google.appengine.api import users
from google.appengine.api import images
from google.appengine.ext import db
from google.appengine.ext import webapp
class ImgUpload(db.Model):
project_name = db.StringProperty()
project_description = db.StringProperty(multiline=True)
img_name = db.StringProperty()
img_img = db.BlobProperty()
date = db.DateTimeProperty(auto_now_add=True)
class UploadPage(webapp.RequestHandler):
def get(self):
self.response.out.write("""<html><body>
<form action="/upload" enctype="multipart/form-data" method="post">
<div><label>Project Name</label></div>
<div><textarea name="title" rows="2" columns "60"></textarea></div>
<div><label>Despcription:</label></div>
<div><textarea name="content" rows="3" cols="60"></textarea></div>
<div><label>Image Name</label></div>
<div><textarea name="imgname" row="1" cols="60"></textarea></div>
<div><label>Image</label></div>
<div><input type="file" name="img"/></div>
<div><input type="submit" value="Upload" /></div>
</form>
</body>
</html>""")
def post(self):
images = ImgUpload()
project_name = self.request.get('title')
project_description = self.request.get('content')
img_img = self.request.get('img')
img_name = self.request.get('imgname')
images.img_img = db.Blob(img_img)
images.project_name = project_name
images.project_description = project_description
images.img_name = img_name
images.put()
self.redirect('/upload')
class DisplayPage(webapp.RequestHandler):
def get(self):
display = db.GqlQuery("SELECT * "
"FROM display "
"WHERE ANCESTOR IS :1 "
"ORDER BY date DESC LIMIT 5"
)
for record in display:
self.response.out.write('<b>%s</> is the Name' % record.project_name)
def main():
application = webapp.WSGIApplication(
[('/', UploadPage),
('/display', DisplayPage)
],
debug=True)
wsgiref.handlers.CGIHandler().run(application)
if __name__=="__main__":
main()
當我運行它,我得到一個KindError:爲一種「顯示」沒有實現。這是一個與缺乏數據庫密鑰相關的問題,我知道他們的數據在商店中,我可以在管理員中看到它,並且我看不到任何命名問題(至少在我頭頂,可能會有對於我所知道的所有數據都是成千上萬)究竟是什麼導致這個錯誤彈出?預先感謝您的建議。
我修復了ImgUpload問題,但當然彈出了新的錯誤。我使用[this](http://code.google.com/appengine/docs/python/images/usingimages.html)作爲參考,看起來他們只是建立了一個關鍵的字符串調用GuestBook名稱。我想爲每個條目使用不同的字符串,因此我可以將所有條目分組。我可以使用其中一個字段作爲關鍵字,只需要一個鍵(title.append(' - key'))? – Kevin 2012-01-12 15:18:31
我建議你檢查他們的例子生成的html代碼,並將一些日誌記錄調用添加到Python代碼中,這將有助於你理解發生的事情。每個問候都有一個唯一的密鑰。他們將該密鑰傳遞到他們的圖像顯示視圖中,然後按鍵而不是使用查詢來獲取圖像。此外,請仔細閱讀討論[鍵和路徑](http://code.google.com/appengine/docs/python/datastore/entities.html)的文檔,您可以輕鬆地從字符串構建密鑰。 – 2012-01-12 16:58:01
我可以通過執行不帶鍵的查詢並在顯示中做記錄並在其中構建html來使查詢工作。然而,我不能得出關鍵概念,我可能會提出一個新的問題。 – Kevin 2012-01-13 17:04:04