我有一个网页,其中包含指向 URL 例如/customer/showitem?id=7 的链接,该网页使用类 customer 中的方法 showitem() 在子窗口中显示特定客户的详细信息。该方法可以设置客户类属性的值,该属性控制加载页面时显示的警报(例如 self.onloadalert="警告!客户欠债了。")。
如果客户窗口关闭,然后再次打开(可能使用不同的 ID,例如/customer/showitem?id=8),新客户的详细信息将正确显示,但仍然会出现上面的加载警告,因为 customer.自上次调用以来 onloadalert 没有改变(我已经通过调试验证了这一点)。看起来即使该方法在第二次 url 调用时从头开始运行,客户类(及其所有属性值)仍然保留在上一次调用中。
我可以通过在 showitem() 开头重置该特定属性来解决该属性的问题,但是其他 customer.attributes 呢? (特别是如果有很多的话) - 我无法按名称重置它们!如何确保每个 url 调用都会重新加载该类(从而重新初始化)?
我正在使用 CherryPy (3.20rc1),尽管我猜这个问题也适用于使用相同/class/method?params url 格式的其他框架。
如有任何帮助,我们将不胜感激。
艾伦
最佳答案
如果您希望数据仅在一次请求中保留,请将其粘贴到 cherrypy.request
对象上:
cherrypy.request.onloadalert="Warning!"
cherrypy.request
对象会被完全销毁并为每个请求重新创建,即使它是可以安全导入的。弄清楚如何做留给读者作为练习。 ;)
关于python - 第二次 url 调用时类未刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3314833/