注意:不能使用 Javascript 或 iframe。事实上,我不能相信客户端浏览器可以做任何事情,除了超基础。
我正在将一个遗留的 PHP4 应用程序重建为一个 MVC 应用程序,我目前的大部分研究都集中在 Pylon 的框架上。
我遇到的第一个奇怪问题之一,过去我通过使用 iframe 或更好的 JavaScript 解决了一个问题,它显示了一个动态的“小部件”集合,就像典型控制器的索引视图的摘要视图。
可视化我的问题的最佳方法是查看 Google 的个性化主页。他们用 Javascript 解决了这个问题,但是对于我的场景来说,javascript 和几乎任何高于基本 XHTML 的东西都是不可能的。
我开始研究的一个想法是让我的 Frontpage 控制器为当前激活的小部件轮询数据库或其他服务,然后获取元组/字典列表,动态实例化每个控制器并构建渲染子视图的列表/字典并传递到首页视图,让它解决问题。
所以使用 peusudo 代码:
Get request goes to WSGI
WSGI calls pylons
Pylons routes to Frontpage.index()
Frontpage.index()
myViews = list()
for WidgetController in ActiveWidegets():
myViews.append(subRender(WidgetController, widgetView))
c.subviews = myViews
render(frontpage.mako)
关于 subRender 的奇怪之处
__import__
通过(当前硬编码到项目的命名空间:()动态导入控制器- 有可能非常昂贵(大多数小部件调用可以被缓存,但一个是用户面板)
我觉得必须有一种更好的方法,或者可能已经在 WSGI 或更好的 Pylons 中实现了一种机制来做到这一点,但到目前为止,我发现的最接近的是这个实用方法: http: //www.pylonshq.com/ docs/en/0.9.7/modules/controllers_util/#pylons.controllers.util.forwardN
但在 pylons 之上构建 pylons实例只是为了获得集合视图似乎有点疯狂。