我正在使用Google App Engine和Python开发web应用程序。 我正面临着一个奇怪的问题,我不知道如何解决它以及是什么原因造成的。 当我填写表格时,我会发送数据以检查它们。如果他们没有完成,并且某些字段错过了,服务器就会发送一个“填充所有字段!”的建议。python self.session不能正确保存数据
这工作相当好。
我想要做的是发送表单,填充用户在提交表单前填写的“描述”和“标题”字段,因此他必须填写仅填充未填充的字段(和他不需要从头开始重写所有内容)。
这是代码:
class SaleAnnCheck(BaseHandler):
def post(self):
title = self.request.POST.get('title')
cat = self.request.POST.get('cat')
description = self.request.POST.get('description')
AcqOpt = self.request.POST.get('AcqOpt')
lat = self.request.POST.get('lat')
lng = self.request.POST.get('lng')
image1 = self.request.POST.get("file1", None)
image2 = self.request.POST.get("file2", None)
image3 = self.request.POST.get("file3", None)
logging.info("info sale announcment")
logging.info(title)
logging.info(cat)
logging.info(description)
logging.info(AcqOpt)
logging.info(lat)
logging.info(lng)
logging.info(image1)
logging.info(image2)
logging.info(image3)
self.session["ECommerceUser"]["description"]=description
self.session["ECommerceUser"]["title"]=title
logging.info('session')
logging.info(self.session["ECommerceUser"])
if title == '' or cat == None or description == '' or AcqOpt == None or lat == '' or lng == '':
error = 'empty'
urlR='/CreateSaleAnn?'+urllib.urlencode({'error':'empty'})
self.redirect(urlR)
class Create(BaseHandler):
def get(self):
error = self.request.get('error')
if error == 'empty':
logging.info('sbagliato')
logging.info(self.session["ECommerceUser"])
template = JINJA_ENVIRONMENT.get_template('templates/CreateAnnouncement.html')
w = self.response.write
w(template.render({'error':'FILL ALL THE MANDATORY FIELDS!', 'description': self.session["ECommerceUser"]["description"], 'title': self.session["ECommerceUser"]["title"]}))
else:
logging.info('giusto')
logging.info(self.session["ECommerceUser"])
template = JINJA_ENVIRONMENT.get_template('templates/CreateAnnouncement.html')
w = self.response.write
w(template.render({'description': self.session["ECommerceUser"]["description"], 'title': self.session["ECommerceUser"]["title"]}))
当我提交的内容是通过使一个HTTP POST请求到一定的URL,通过SaleAnnCheck办理托运形式。
描述和标题正确保存在会话中(我通过在日志中打印self.session [“ECommerceUser”]的内容来检查它)。然后,如果未填写字段,则服务器会通过对相关URL的GET请求再次重定向到表单页面。
对该URL的请求由Create处理。但是当我尝试使用描述和标题的以前输入的值呈现窗体的HTML模板(使用jinja2)时,相关文本区域未填充该值。 这是因为self.session [“ECommerceUser”] [“description”]和self.session [“ECommerceUser”] [“title”]是空的,但它们并不是在我之前(在SaleAnnCheck中)检查它们时。
为什么会发生?任何解释?这是一个奇怪的问题,并没有关于互联网上的任何提示或建议
要保存变量的会话,重定向的页面,然后检索该会话的另一功能。这不是传递变量的最佳体系结构。尝试搜索Python HTTP请求和承诺。 –