Я не понимаю, почему метод POST в GAE не видит атрибут, установленный в GET, когда GET запускается до POST.Ниже приводится простая иллюстрация:
app.yaml
application: post-does-not-see-get
version: 1
runtime: python
api_version: 1
handlers:
- url: /.*
script: index.py
index.py
import logging
import wsgiref.handlers
from google.appengine.ext import webapp
class MainHandler(webapp.RequestHandler):
formstring = '''<form method="post" action="/">
<p>Enter sth: <input type="text" name="sth"/></p>
<p><input type="submit"></p></form>'''
def get(self):
self.a=5
logging.info('a: '+str(self.a))
self.response.out.write(self.formstring)
def post(self):
self.response.out.write('<p>'+self.a+'</p>\n')
self.response.out.write(self.formstring)
def main():
application = webapp.WSGIApplication(
[('/.*', MainHandler)], debug=True)
wsgiref.handlers.CGIHandler().run(application)
if __name__ == '__main__':
main()
whileниже показано, что сообщение видит изменения, сделанные в get
class B:
a=3
def get(self):
self.a=4
def post(self):
print('a from post: '+str(self.a))
q=B()
q.post()
q.get()
q.post()