2016-11-24 141 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

相关问题