Вызов ServeHandler из основной функции

Я пытаюсь передать параметр от страницы 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==

РЕДАКТИРОВАТЬ: Это мой код 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 ответ

Решение

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

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

обработчики:
- URL: /.*
  скрипт: download.py

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

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

И URL будет что-то вроде:

http://localhost:8080/download?key=vzsX4xM1EtNak5RQVxj4BQ==
Другие вопросы по тегам