Python web应用正在共享相同的内存存储
我在一个用于计算用户详细信息的应用程序中工作。但不知何故,一个用户的值会改变另一个用户的值。 下面是一段代码Python web应用正在共享相同的内存存储,python,google-app-engine,python-2.7,web,Python,Google App Engine,Python 2.7,Web,我在一个用于计算用户详细信息的应用程序中工作。但不知何故,一个用户的值会改变另一个用户的值。 下面是一段代码 def Compute_UserScore(self, details, ques_no): try: if(HomePage.answer_.strip() == ""): self.response.write("""<script type = "text/javascript"> alert("D
def Compute_UserScore(self, details, ques_no):
try:
if(HomePage.answer_.strip() == ""):
self.response.write("""<script type = "text/javascript">
alert("Dear User, You can not answer same answer twice.. Take test Again !");
</script>""")
self.redirect('/otherPages/subjectSelect.html')
else:
count = 0
HomePage.ans_no = 0
HomePage.unans_no = 0
HomePage.correct_no = 0
HomePage.wrong_no = 0
HomePage.failed_ques = list()
HomePage.answer_ = HomePage.answer_.strip()
question_1 = HomePage.question_.split(" gcdc_split_format ")
while (count != (ques_no)):
user_answer = str(details[count]).strip().capitalize()
real_answer = str(HomePage.answer_[count]).strip().capitalize()
if (len(str(user_answer).strip()) == 1):
HomePage.ans_no = HomePage.ans_no + 1
if(user_answer.strip() == real_answer.strip()):
HomePage.correct_no = HomePage.correct_no + 1
else:
HomePage.wrong_no = HomePage.wrong_no + 1
HomePage.failed_ques.append(str("No. " + str(int((count + 1))) + " " + str(question_1[count])))
else:
HomePage.unans_no = HomePage.unans_no + 1
count = count + 1
HomePage.answer_ = ""
except:
self.redirect('/')
return " "
问题是,当用户a进行测试时,他看到另一个用户B的结果。
阅读了有关使用实例变量的内容,但仍然没有找到解决方法。解决方案很简单:停止在web开发中设置类变量!:) Web请求是无状态的,这意味着您永远不知道在请求之间发生了什么-在设置类变量和重定向之间 使用数据库存储具有用户登录名/名称的临时数据(或使用哈希/随机设置以确保安全性),或通过参数(隐藏或在“?”之后)将值发送到其他html页面。 使用数据库更好,若您不想这样做,那个么通过http发送值(隐藏在html中)。以下是解决方案的一个版本(不含数据库): 1.使用普通html表单并为此表单-问题页面编写处理程序 2.在处理程序中,像这样写get方法:
def post(self, some_parameters):
...
self.render('homepage.html', {'ans_no': ans_no,\
'uans_no': uans_no ...})
3.homepage.html必须是显示结果的模板解决方案很简单:停止在web开发中设置类变量!:) Web请求是无状态的,这意味着您永远不知道在请求之间发生了什么-在设置类变量和重定向之间 使用数据库存储具有用户登录名/名称的临时数据(或使用哈希/随机设置以确保安全性),或通过参数(隐藏或在“?”之后)将值发送到其他html页面。 使用数据库更好,若您不想这样做,那个么通过http发送值(隐藏在html中)。以下是解决方案的一个版本(不含数据库): 1.使用普通html表单并为此表单-问题页面编写处理程序 2.在处理程序中,像这样写get方法:
def post(self, some_parameters):
...
self.render('homepage.html', {'ans_no': ans_no,\
'uans_no': uans_no ...})
3.homepage.html必须是显示结果的模板解决方案很简单:停止在web开发中设置类变量!:) Web请求是无状态的,这意味着您永远不知道在请求之间发生了什么-在设置类变量和重定向之间 使用数据库存储具有用户登录名/名称的临时数据(或使用哈希/随机设置以确保安全性),或通过参数(隐藏或在“?”之后)将值发送到其他html页面。 使用数据库更好,若您不想这样做,那个么通过http发送值(隐藏在html中)。以下是解决方案的一个版本(不含数据库): 1.使用普通html表单并为此表单-问题页面编写处理程序 2.在处理程序中,像这样写get方法:
def post(self, some_parameters):
...
self.render('homepage.html', {'ans_no': ans_no,\
'uans_no': uans_no ...})
3.homepage.html必须是显示结果的模板解决方案很简单:停止在web开发中设置类变量!:) Web请求是无状态的,这意味着您永远不知道在请求之间发生了什么-在设置类变量和重定向之间 使用数据库存储具有用户登录名/名称的临时数据(或使用哈希/随机设置以确保安全性),或通过参数(隐藏或在“?”之后)将值发送到其他html页面。 使用数据库更好,若您不想这样做,那个么通过http发送值(隐藏在html中)。以下是解决方案的一个版本(不含数据库): 1.使用普通html表单并为此表单-问题页面编写处理程序 2.在处理程序中,像这样写get方法:
def post(self, some_parameters):
...
self.render('homepage.html', {'ans_no': ans_no,\
'uans_no': uans_no ...})
3.homepage.html必须是显示结果的模板为什么要在实例方法中设置类变量?上面的代码就是问题所在。这就是为什么我要问为什么。一个链接到一个页面,帮助或更好的stil,一个示例代码。谢谢@wooble当你之前问这个问题时,你得到的答案有什么问题吗?@DanielRoseman,是的,我也问了。但我一直在努力让它发挥作用,但仍然没有取得任何进展。你需要一个系统来区分不同的用户。开始检查如何使用用户服务,以便开始构建一个好的应用程序,而不是创建一个小怪物。为什么要在实例方法中设置类变量?上面的代码就是问题所在。这就是为什么我要问为什么。一个链接到一个页面,帮助或更好的stil,一个示例代码。谢谢@wooble当你之前问这个问题时,你得到的答案有什么问题吗?@DanielRoseman,是的,我也问了。但我一直在努力让它发挥作用,但仍然没有取得任何进展。你需要一个系统来区分不同的用户。开始检查如何使用用户服务,以便开始构建一个好的应用程序,而不是创建一个小怪物。为什么要在实例方法中设置类变量?上面的代码就是问题所在。这就是为什么我要问为什么。一个链接到一个页面,帮助或更好的stil,一个示例代码。谢谢@wooble当你之前问这个问题时,你得到的答案有什么问题吗?@DanielRoseman,是的,我也问了。但我一直在努力让它发挥作用,但仍然没有取得任何进展。你需要一个系统来区分不同的用户。开始检查如何使用用户服务,以便开始构建一个好的应用程序,而不是创建一个小怪物。为什么要在实例方法中设置类变量?上面的代码就是问题所在。这就是为什么我要问为什么。一个链接到一个页面,帮助或更好的stil,一个示例代码。谢谢@wooble当你之前问这个问题时,你得到的答案有什么问题吗?@DanielRoseman,是的,我也问了。但我一直在努力让它发挥作用,但仍然没有取得任何进展。你需要一个系统来区分不同的用户。开始检查如何使用用户服务,以便开始构建一个好的应用程序,而不是你正在创建的小怪物。当然这是post方法-我的错误:)当然这是post方法-我的错误:)当然这是post方法-我的错误:)当然这是post方法-我的错误:)