2013-02-03 47 views
4

我正在使用金字塔1.4。我想從我的模型類中生成一些自定義金字塔事件。事件如下產生:模型內部的金字塔事件

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

正如你所看到的,我需要訪問應用程序註冊表。我知道get_current_registry()函數。但我也擔心從金字塔網站此評論:

「這個功能應該非常謹慎使用,通常只在單元測試代碼」

問題

  • 是產生來自數據層的金字塔事件(SQLAlchemy模型)通常是一個壞主意?
  • 如果不是,如何以更文明的方式訪問應用程序註冊表? (擴展Base模型也許?)
  • 如果是的,是否有一些替代我可以使用。我知道SQLAlchemy事件,但我找不到生成自定義事件的能力。

理由

基本上,我分我的應用程序進入功能和我試圖讓他們分離。爲此,我有時需要IoC:我打算使用事件作爲其意思。例如,每當用戶回答問題時,就會發出一個事件。然後,這樣的事件可以在應用程序的另一部分中訂閱。我喜歡將應用程序邏輯保留在模型中而不是視圖中。因此,所描述的問題。

+0

你能排序嗎?我正在努力想象一樣。 –

+0

我沒有真正找到正確的方式來訪問註冊表。 – julkiewicz

回答

1

從模型中發射金字塔事件的用例是什麼?一般來說,這是一個壞主意。

至於連接應用程序/模型。大部分工作都是在main()中的初始化調用中完成的,它將設置傳遞給模型以提供連接設置等。我會確保將所有邏輯聯繫在一起只限於應用程序啓動時的單個函數調用。

最後,儘管我會想像你想要的更好地用另一種方式完成。

+0

我對原始帖子進行了修改。 – julkiewicz