之前我写GAE上自己用的 blog engine 时实现了一个简单的 sidebar 模块,相关细节如下:
1. sidebar 包含的内容称之为 widget
2. 在后台可以设置要显示哪些 widget
3. 每个 widget 都继承自 WidgetBase, 覆盖 customize_form 方法之后就可以实现自定义
4. widget 自定义的数据都存放到 datastore (以 json 格式)
5. 在模板中调用 get_enabled_widgets 方法即可得到包含所有启用的 widget 的列表
6. 调用 widget 的 render 方法即可显示该 widget
刚刚突然想到,这部分代码只要做少量修改就能作为一个独立的 sidebar 模块被重用,不知道这样的模块用处大不大(我会不会是在造轮子)?
代码迟一些再发布,原始的未经修改的代码在这里可以看到
http://code.google.com/p/tublog/source/browse/widgets/__init__.py