2016-11-24 6 views
1

djangoのrest-hooksのようなフラスコのモデルで、挿入、更新、削除後にターゲットURLにデータをポストしたいとします。今の私は以下のようなフラスコSQLAlchemyのの信号イベントのみを発見した:フラスコ:データベースの挿入、削除、更新後のポストデータ

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

我々はジャンゴで静止フックを使用してくださいまたは私は使用することができ、他のライブラリがあるようにフラスコ内でこれを行うには、どのように。

ありがとうございます。

+0

あなたは既にそれが分かっているようです。あなたの 'do_stuff'メソッドは挿入の後にトリガされます。 '' after_update''と '' after_delete''で同じことができます。または、Pythonで投稿要求を行う方法についてのあなたの質問ですか?そのためには、たとえばhttp://docs.python-requests.org/ja/master/などのリクエストを使用できます。 – AArias

+0

@AArias えええええええええええええええええええええええええええええええええええええええええええええええええええええええええ。 – Zeeshan

答えて

1

あなたがPOSTしたいRESTエンドポイントが同じフラスコアプリケーション内にあると仮定しています。 RESTエンドポイント内のビジネスロジックを切り離し、アプリケーション全体でコードを共有することをお勧めします。

私の場合、私は通常、別のPYファイルを作成します(サービスそれらを呼ばれる)と、そこにビジネスロジックを移動:

# inventory_services.py 

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

を次にあなたがデータをPOSTあなたのRESTエンドポイントからこのメソッドを呼び出します

from inventory_services import delete_item 

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

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錬金術のフックメソッドで同じサービス・メソッドを使用しますここでの基本的な考え方は、アプリケーション全体でアクセシブルになるように、APIメソッドのコードを他のプレーン関数に移動することです。

+0

助けてくれてありがとう – Zeeshan

+0

@ Zeeshan Glad私は助けました。 – Leone

関連する問題