2012-01-11 13 views
1

を形成し、私はこれを実行するとの表示画像は、私はちょうどGAE上に画像を表示アウトテストしていたデータストア

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取得この小さなの.pyを持っています。これはDBキーの欠如に関連する問題ですか?私はデータが店舗にあることを知っています。私は管理者にそれを見ることができます。そして、私の頭の上から命名の問題は見えません。私が知っているすべてのために何千もの)。このエラーの原因は何ですか?事前にアドバイスをいただきありがとうございます。

答えて

1

GQLでは、「表示」の種類から選択しています。表示種類を定義していない場合、 "ImgUpload"種類が定義されています。クエリにobject interfaceを使用すると、この種の問題を回避できます。

フィルタリングするためにクエリに渡されるパラメータも表示されないので、別のエラーが発生します。

+0

私はImgUploadの問題を修正しましたが、もちろん新しいエラーが発生しました。参考までに[this](http://code.google.com/appengine/docs/python/images/usingimages.html)を使用していました。私は各エントリごとに異なる文字列を使いたいので、すべてのエントリをグループ化しておくことができます。フィールドの1つをキーとして使用できますか?それにキー(title.append( ' - key'))を入力するだけですか? – Kevin

+0

私はあなたの例で生成されたhtmlコードを調べ、いくつかのロギング呼び出しをPythonコードに追加することをお勧めします。各挨拶には一意のキーがあります。そのキーをイメージ表示ビューに渡し、クエリを使用するのではなく、キーでイメージを取得します。また、[キーとパス](http://code.google.com/appengine/docs/python/datastore/entities.html)で説明されているドキュメントをよく読んで、簡単に文字列からキーを作成できます。 –

+0

私は、キーなしでクエリを実行し、forレコードを表示し、そこにhtmlを構築することによって、クエリが動作するようにすることができます。私はしかし、キーコンセプトをダウンすることはできません、私はおそらくそれについて新しい質問を開きます。 – Kevin

関連する問題