2012-03-28 1 views
-3

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

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

Как выглядит ваш 'app.yaml'? – bernie

+1

дорогой бог, человек; добавьте эту информацию на свой вопрос (отредактируйте ее) – bernie

+0

@bernie: Хорошо, я отредактирую вопрос. –

ответ

3

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

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

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

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

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

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

http://localhost:8080/download?key=vzsX4xM1EtNak5RQVxj4BQ== 
+0

: Спасибо, но если я поместил это, когда вы напишете в app.yaml, тогда главная страница будет выполнена как (download.py) страница, а мой проект имеет 3 страницы python и один html-файл, как показано выше в app.yaml? –

+1

Действующая проблема. Я обновлю ответ. Но это потребует еще одного шага с вашей стороны. Повесить там. – bernie

+0

: Большое спасибо за вашу помощь, теперь класс выполнен. –