Приложение Python ведет себя необычно, кешируется ли параметр URL? - PullRequest
2 голосов
/ 01 ноября 2011

Сегодня я впервые пробую Google AppEngine и Python, и мне удалось запустить простой пример.Это сработало, но что-то странное происходит: когда значение параметра URL изменяется, оно не регистрируется, пока я не перезапущу приложение.

В моем примере ниже, если я запущу: http://localhost:8080/?x=hello, он вернет 'x"привет", как и должно быть, но если я изменю значение X, его новое значение не повлияет на вывод.

Я подозреваю, что происходит какое-то внутреннее кэширование, но я не уверен.

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

import cgi
form = cgi.FieldStorage()
x = form.getvalue('x')

class MainHandler(webapp.RequestHandler):
    def get(self):
        if x == 'hello':
            self.response.out.write('x is hello')
        else:
            self.response.out.write('x is not hello')

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


if __name__ == '__main__':
    main()

Ответы [ 2 ]

5 голосов
/ 01 ноября 2011

Вы получаете значение формы вне обработчика, в коде уровня модуля. Очевидно, это определяется при первой загрузке модуля во время первого запроса. Вы должны делать это внутри метода get.

2 голосов
/ 02 ноября 2011

Вы можете сделать что-то подобное, чтобы получить доступ к значению параметра в обработчике:

x = self.request.get('x', '')

Это заполнит значение /?x=<value> из HTTP GET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...