Python Google App Engine: вызвать конкретный метод из файла yaml? - PullRequest
2 голосов
/ 28 июня 2010

Я новичок в программировании баз данных с помощью Google App Engine и занимаюсь программированием на Python.Мне было интересно, если мне разрешено иметь один файл Python с несколькими классами обработчиков запросов, каждый из которых имеет методы get и post.Я знаю, что файл yaml позволяет мне указать, какие сценарии запускаются с конкретными URL-адресами, как в примере ниже:

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

Как мне сказать ему запускать определенный метод, который находится в одном из классов вфайл .py?Это вообще возможно / разрешено?Нужно ли разделять разные классы обработчиков запросов на разные файлы Python?Мое понимание баз данных в настоящее время довольно поверхностно, поэтому я не мог иметь никакого смысла.

Спасибо.

1 Ответ

3 голосов
/ 28 июня 2010

Мне было интересно, разрешено ли мне есть один файл Python с несколькими классы обработчиков запросов, каждый из которых имеет методы get и post.

Конечно! Этот app.yaml просто передает управление на helloworld.py, который будет запускать функцию main, определенную в этом файле - и эта функция обычно устанавливает приложение WSGI, которое соответствующим образом отправляет, в зависимости от URL, правому классу обработчика. Например, посмотрите пример кода здесь , очень рано в уроке:

application = webapp.WSGIApplication(
                                     [('/', MainPage),
                                      ('/sign', Guestbook)],
                                     debug=True)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()

Я не копирую операторы import и определения классов, потому что они не имеют значения: это пример того, как один файл .py отправляет различным классам обработчиков (в данном случае два).

Это не означает, что файл yaml позволяет вам вызывать любой метод, конечно: он передает управление файлу .py, чей main отвечает за все последующее (например, с * 1019). * мини-фреймворк, который поставляется с App Engine, это всегда будет get или post метод [[или put, delete, ..., и т. д., если вы также поддерживаете это - мало кто, если особенно RESTful ;-)]] вызывается в зависимости от точного метода HTTP и URL-адреса во входящем запросе.

...