5

私はピラミッド1.4を使用しています。モデル クラス内からいくつかのカスタム Pyramid イベントを生成したいと考えています。イベントは次のように生成されます。

request.registry.notify(MyCustomEventType("Here it comes"))

ご覧のとおり、アプリケーション レジストリにアクセスする必要があります。機能を意識していget_current_registry()ます。しかし、ピラミッドのウェブサイトからの次のコメントも気になります。

「この関数は非常に慎重に使用する必要があり、通常は単体テスト コードでのみ使用してください」

質問:

  • データ層 (SQLAlchemy モデル) から Pyramid イベントを生成することは一般的に悪い考えですか?
  • そうでない場合、より文明的な方法でアプリケーション レジストリにアクセスする方法は? (拡張Baseモデルかな?)
  • はいの場合、使用できる代替手段はありますか。SQLAlchemy イベントは認識していますが、カスタム イベントを生成する機能が見つかりませんでした。

根拠:

基本的に、私は自分のアプリを機能に分割し、それらを分離したままにしようとしています。そのためには、IoC が必要になることがあります。そのための手段としてイベントを使用することを計画していました。たとえば、ユーザーが質問に答えるたびに、イベントが発行されます。次に、そのようなイベントをアプリケーションの別の部分でサブスクライブできます。ビューではなく、モデルにアプリケーション ロジックを保持するのが好きです。したがって、説明されている問題。

4

1 に答える 1

1

モデルからピラミッド イベントを発生させるユース ケースは何ですか? 一般的に、それは悪い考えです。

アプリ/モデルの接続について。そのほとんどは、設定をモデルに渡して接続設定などを与える main() の初期化呼び出しで行われます。物事を結びつけるために行われるロジックは、アプリケーションの起動時にその単一の関数呼び出しに限定されるようにします。

最終的には、あなたが望むことは別の方法で行う方がよいと思います。

于 2013-02-04T12:20:04.730 に答える