blog mail me! feed

关于web.py的一点笔记.

最近在试图用web.py这个轻量级框架写个网站,
实现的时候把每个页面的controller单独成module, 放在ctrls目录下,
接下来就发现了问题: 各个module和main module之间没法传递变量,
因此session, database, template render都没法在全局共享, 糟糕的问题.

问题的来源很简单:
web.py把request这一块完全托管了, 由其来初始化各个controller的类,
因此没法通过初始化函数传递我需要的变量进去.

今天仔细钻研了下才发现是我Python太菜的缘故,
其实用setattr()就可以把需要的变量传递给对应的类/模块了.

以下是一个实现的sample:

*UPDATE* 另外一个实现里我把所有模块都在load_controller()函数里通过__import__动态加载, 再通过globals()[CTRL_NAME] = CTRL_CLS 来实现, 这样可以省去前面的无数 from xxx import xxx

Read the rest of this entry »