注: Javascript または iframe は使用できません。実際、私はクライアント ブラウザが超基本的なことしかできないとは信じていません。
現在、私の研究のほとんどは Pylon のフレームワークに焦点を当てており、レガシー PHP4 アプリを MVC アプリケーションとして再構築しています。
私が遭遇した最初の奇妙な問題の 1 つと、過去に iframe を使用して解決した問題の 1 つは、JavaScript を使用して、典型的なコントローラーのインデックス ビューのダイジェスト ビューのような「ウィジェット」の動的コレクションを表示することです。
私の問題を視覚化する最良の方法は、Google のパーソナライズされたホームページを見ることです。彼らはJavascriptで問題を解決しますが、私のシナリオではjavascriptと基本的なXHTML以上のものはほとんど不可能です.
私が取り組み始めたアイデアの 1 つは、現在アクティブなウィジェットのデータベースまたはその他のサービスを 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__
(現在、プロジェクトの名前空間にハードコードされています:()を介してコントローラーを動的にインポートします- 非常にコストがかかる可能性があります (ほとんどのウィジェット呼び出しはキャッシュできますが、そのうちの 1 つはユーザー パネルです)
これを行うには、より良い方法、またはおそらく WSGI または Pylons に既に実装されているメカニズムが必要だと思いますが、これまでのところ、私が見つけた最も近い方法は次のユーティリティメソッドです: http://www.pylonshq.com/ docs/en/0.9.7/modules/controllers_util/#pylons.controllers.util.forward ですN
が、コレクション ビューを取得するためだけにpylonsの上に pylons のインスタンスを構築するのは少しクレイジーに思えます。