为什么globals()
有时会遗漏这个模块中的函数?假设它被另一个模块调用,并且可能还没有运行任何这些功能。
我启动了我的网页,该网页位于代码a_builder
中,有时,而不是检索a_builder
中的数据的网页,而是返回“抱歉,此页面没找到。”
到目前为止,这种情况最常见的情况是,如果我对网页内容进行了更改,可以在a_builder的代码中找到。然后我将repo拉到测试服务器,然后重置服务器。但是在我执行此操作后,可能会导致包含与列表中每个构建器关联的内容的所有网页也显示相同的“抱歉,找不到页面..”
我不会经常查看这些构建器/网页,以确保这些编辑是唯一的原因或唯一的时间。
网站公开代码,传入构建器列表,即网页:
@cherrypy.expose(['a_builder','b_builder', 'c_builder',...])
@cherrypy.tools.validate_user()
def generic_builder(self, *args, **kw):
from urlparse import urlparse
path = urlparse(cherrypy.url()).path
if len(path) > 1:
kw['page'] = path[1:].replace('-','_') # drop /
else:
kw['page'] = '/'
import survey_builders
return survey_builders.generic_builder(get_uid(), kw)
以下是上述代码中返回的函数示例:
def generic_builder(user_id, kw):
# look in the 'page' kwarg for the builder to call
if kw['page'] in globals():
this_function = globals().pop(kw['page'])
return this_function(user_id)
else:
return cherrypy.bootstrap_page("""<p>Sorry, this page was not found...</p>"""...)