Отображение изображений из хранилища данных - PullRequest
1 голос
/ 12 января 2012

Я просто тестирую отображение изображений на 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: Нет реализации для вида 'display'. Является ли это проблемой, связанной с отсутствием ключа БД, я знаю, что они находятся в хранилище, я вижу это в админке, и я не вижу никаких проблем с именами (по крайней мере, из головы быть тысячами за все, что я знаю). Что именно вызывает эту ошибку? Заранее благодарю за совет.

1 Ответ

1 голос
/ 12 января 2012

В вашем GQL вы выбираете из вида "дисплей". У вас не определен вид отображения, у вас определен вид "ImgUpload". Использование объектного интерфейса для запроса поможет вам избежать подобных проблем.

Я также не вижу параметра, который передается в запрос для фильтрации, поэтому вы получите еще одну ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...