2016-11-24 127 views
1

我想要在django中的燒瓶中的模型(如rest-hooks)中插入,更新和刪除之後將數據發佈到目標URL。對燒瓶的SQLAlchemy的像下面現在我只找到信號事件:燒瓶:在數據庫中插入,刪除和更新後發佈數據

@event.listens_for(MyModel, 'after_insert') 
def do_stuff(mapper, connection, target): 

那麼如何像我們一樣用在Django休息鉤或燒瓶做到這一點是有,我可以使用任何其他庫。

在此先感謝。

+0

看來你已經想通了。你的'do_stuff'方法將在插入後觸發。你可以用''after_update''和''after_delete''做同樣的事情。或者你的問題是關於如何在python中發佈一個請求?爲此,您可以使用請求,例如(http://docs.python-requests.org/en/master/)。 – AArias

+0

@AArias 是的,我已經想通了,但我也想知道,如果有一個像燒瓶的休息鉤也庫。 – Zeeshan

回答

1

我假設您想要POST的REST端點位於相同的瓶子應用程序中。分離REST端點中的業務邏輯並在整個應用程序中共享代碼是一種很好的做法。

在我的情況,我通常有創建單獨的PY文件(稱爲他們的服務)和移動業務邏輯:

# inventory_services.py 

def delete_item(id, data): 
    pass 
    # ... business logic here 

然後從您的REST端點調用此方法,您發佈的數據:

from inventory_services import delete_item 

@api.route('/inventory/delete-item', methods=['POST']) 
def delete_item_api(): 
    posted_data = request.get_json() 
    delete_item(posted_data.id, posted_data.data) 

使用您的SQL鍊金術鉤子方法相同的服務方法:

from inventory_services import delete_item 

@event.listens_for(MyModel, 'after_insert') 
def do_stuff(mapper, connection, target): 
    delete_item(id, data) 

這裏的基本思想是將你的API方法中的代碼移動到其他普通函數中,以便它們可以在整個應用程序中訪問。

+0

感謝您的幫助 – Zeeshan

+0

@Zeeshan很高興我幫了忙。 – Leone

相關問題