Appengine GET параметры - PullRequest
       3

Appengine GET параметры

5 голосов
/ 24 апреля 2011

Я не очень знаком с Python и пытаюсь преобразовать одно из моих php-приложений в python. В настоящее время я запускаю приложение на локальном хосте, используя средство запуска appengine, и это то, что я пытаюсь сделать.

Я пытаюсь получить список всех параметров, опубликованных в URL, а затем отправить их на страницу и получить ее содержимое.

Итак, в основном: 1: получить параметры 2: получить содержимое URL, отправив эти параметры (PHP-эквивалент curl для file_get_contents)

Это мой код

from google.appengine.ext import webapp

class MyHandler(webapp.RequestHandler):
    def get(self):
        name1 = self.request.get_all("q")
        name2 = self.request.get_all("input")
        return name1,name2

x = MyHandler()
print x.get() 

и URL

http://localhost:8080/?q=test1&input=test2

и это ошибка, которую я получаю

AttributeError: 'MyHandler' object has no attribute 'request'

Теперь я не могу заставить его печатать что-либо, и я не уверен, как я могу получить содержимое другого URL, отправив name1 и name2

Я попытался просмотреть документацию, но не могу понять ее, поскольку все, что у них есть, - это всего лишь две строки кода, чтобы начать использовать функцию.

Ответы [ 2 ]

6 голосов
/ 24 апреля 2011
x = MyHandler()
print x.get() 

Это не типичная часть приложения AppEngine. Вы не используете print для возврата вывода в браузер.

Когда вы создаете новое приложение в AppEngineLauncher, оно дает вам скелетный проект, который выглядит следующим образом:

from google.appengine.ext import webapp
from google.appengine.ext.webapp import util


class MainHandler(webapp.RequestHandler):
    def get(self):
        self.response.out.write('Hello world!')


def main():
    application = webapp.WSGIApplication([('/', MainHandler)],
                                         debug=True)
    util.run_wsgi_app(application)


if __name__ == '__main__':
    main()

Ваше приложение должно работать аналогично. Вам нужен метод main (), который создает wsgi_app, который отвечает за вызов вашего обработчика. Эта функция main () вызывается dev_appserver при условии, что файл app.yaml настроен правильно.

def get(self):
    name1 = self.request.get_all("q")
    name2 = self.request.get_all("input")
    self.response.out.write(name1 + ',' + name2)

Должно работать, если вы правильно настроили приложение.

0 голосов
/ 24 апреля 2011

Вам понадобится еще несколько строк кода, чтобы это работало, если вы собираетесь использовать среду WebApp. Вставьте следующие строки в конец вашего кода (и избавьтесь от последних двух строк, в которых вы создаете экземпляр своего класса и вызываете метод get)

application = webapp.WSGIApplication([('/', MyHandler)])

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...