Вызов ServeHandler из основной функции - PullRequest
0 голосов
/ 28 марта 2012

Я пытаюсь передать параметр со страницы Python на другой через URL, этот параметр (ключ к моей проблеме) передается правильно, но на другой странице у меня есть этот код:

from google.appengine.ext import blobstore
from google.appengine.ext import webapp
from google.appengine.ext.webapp import blobstore_handlers
from google.appengine.ext.webapp.util import run_wsgi_app
import urllib
import urllib2        
class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler):
    def get(self):

          blob_key = self.request.get('key')
          blob_key = str(urllib.unquote(blob_key))
          blob_info = blobstore.BlobInfo.get(blob_key)
          self.send_blob(blob_info)

def main():

     application = webapp.WSGIApplication(
    [('/',ServeHandler),], debug=True)
    run_wsgi_app(application)

if __name__ == '__main__':
    main()

но проблема в том, что класс ServeHandler(blobstore_handlers.BlobstoreDownloadHandler): не был выполнен, когда я запустил этот код, вывод

Status: 404 Not Found
Content-Type: text/html; charset=utf-8
Cache-Control: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Length: 0

хотя параметр передан правильно, это URL и ключ (параметр):

http://localhost:8080/download.py?key=vzsX4xM1EtNak5RQVxj4BQ==

EDIT: Это мой код app.yaml:

application: myapplication
version: 1
runtime: python
api_version: 1

handlers:
- url: /compress.py
  script: compress.py
- url: /download.py
  script: download.py
- url: /decompress.py
  script: decompress.py
- url: (.*)/
  static_files: static\1/index.html
  upload: static/index.html

Пожалуйста, я хочу решить эту проблему? Любые предложения приветствуются.

1 Ответ

3 голосов
/ 28 марта 2012

/download.py даже не в вашем app.yaml.
Как webapp найдет правильный скрипт для запуска?

Сосредоточившись сейчас на скрипте загрузки, это пример того, как должен выглядеть ваш app.yaml:

handlers:
- url: /.*
  script: download.py

Редактировать:
В качестве альтернативы, вы можете указатьболее конкретный шаблон регулярного выражения для URL-адреса загрузки:

def main():
    application = webapp.WSGIApplication([
            (r'/download.*', ServeHandler),
        ], debug=True)

И URL-адрес будет выглядеть примерно так:

http://localhost:8080/download?key=vzsX4xM1EtNak5RQVxj4BQ==
...