Вызов 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==