Проблема со ссылками Встраивание оболочки приложения в мое приложение для помощи при написании кода - PullRequest
1 голос
/ 10 февраля 2010

В моем собственном приложении App Engine в браузере я хотел возиться с новым кодом, имитируя доступ к интерпретатору python >> в окне браузера, встраивая это приложение -> http://shell.appspot.com/.

Можно получить shell_20091112.tar.gz при http://code.google.com/p/google-app-engine-samples/downloads/detail?name=shell_20091112.tar.gz&can=2&q=

Итак, я переместил файлы ключей и папки из приложения оболочки в свой каталог приложений. Когда я запускаю свое приложение из SDK, я вижу в браузере приложение оболочки на

http://dwms.appspot.com/shell

в моем приложении, но после того, как я нажал 'enter' после написания чего-то, скажите >>a=1 ... тогда ничего не происходит, поэтому предположим, что моя ссылка на обработчик из формы на мое приложение неверна? (извините, если я неправильно понимаю жаргон).

Форма, из которой я должен получать информацию, находится в пределах shell.html, как показано ниже:

<form id="form" action="shell.do" method="get">
  <nobr>
  <textarea class="prompt" id="caret" readonly="readonly" rows="4"
            onfocus="document.getElementById('statement').focus()"
            >&gt;&gt;&gt;</textarea>
  <textarea class="prompt" name="statement" id="statement" rows="4"
            onkeypress="return shell.onPromptKeyPress(event);"></textarea>
  </nobr>
  <input type="hidden" name="session" value="{{ session }}" />
  <input type="submit" style="display: none" />
</form>

поэтому я думаю, что проблема в том, что мое приложение не отвечает, когда сервер получает 'shell.do' от клиента из-за изменений, которые я сделал или не сделал или сделал неправильно ....

в старом shell.py, который я скопировал из Интернета в каталог моего приложения, я закомментировал все строки из функции main():

#def main():
  #application = webapp.WSGIApplication(
    #[('/shell', FrontPageHandler),
     #('/shell/shell.do', StatementHandler)], debug=_DEBUG)
  #wsgiref.handlers.CGIHandler().run(application)


if __name__ == '__main__':
  #main()

и заменил информацию о связях или сантехнике, добавив аналогичные ссылки к моей main.py следующим образом:

application = webapp.WSGIApplication(
                                     [('/', MainPage),
          ('/shell',shell.FrontPageHandler),
                                      ('shell.do', shell.StatementHandler),
                                      ('/sign', Guestbook),
          ('/zxy/.*', PNGserver) ],
                                     debug=True)


def main():
    run_wsgi_app(application)



if __name__ == "__main__":
    main()

снова - поэтому сейчас проблема в том, что я вижу приложение оболочки, когда я иду на

http://dwms.appspot.com/shell

и введите

>> a=10

но ничего не происходит после ввода утверждений в форму после >>a=10

В случае, если это уместно ... Ниже вы заметите, что я также закомментировал некоторые строки, которые я скопировал из обработчиков приложений старой оболочки app.yaml в app.yaml моего приложения. ПРИМЕЧАНИЕ: После экспериментов с комментариями В приведенных ниже строках не было никакой разницы в том, как оболочка не работает в моем приложении ... Причина комментариев ниже в том, что я подумал, что это может понадобиться, чтобы оболочка знала, что происходит со всеми глобальными переменными в все приложение, а не только где работает оболочка? (Я могу быть смущен по этому поводу?)

Мой app.yaml ниже:

application: dwms
version: 1
runtime: python
api_version: 1

handlers:
- url: /stylesheets
  static_dir: stylesheets

- url: /.*
  script: main.py

- url: /static
  static_dir: static
  expiration: 1d

- url: /remote_api
  script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py

# if you're adding the shell to your own app, change this regex url to the URL
# endpoint where you want the shell to run, e.g. /shell . You'll also probably
# want to add login: admin to restrict to admins only.
#
#- url: /shell
#  script: shell.py

1 Ответ

1 голос
/ 14 февраля 2010

Ответ на мой собственный вопрос заключается в том, чтобы установить следующую консоль оболочки, очень простую и очень полезную:

http://con.appspot.com/console/help/about

...