当使用带有Django、主干和Tastypie的RESTAPI时,相关逻辑在模型创建中的作用是什么?
我们正在尝试将部分应用程序迁移到主干网和tastypie。我已经设置了RESTAPI,它正在处理一些基本示例。然而,目前我们将ajax请求发布到自定义url时存在一些问题,在该视图中,我们可以执行以下操作当使用带有Django、主干和Tastypie的RESTAPI时,相关逻辑在模型创建中的作用是什么?,rest,backbone.js,tastypie,Rest,Backbone.js,Tastypie,我们正在尝试将部分应用程序迁移到主干网和tastypie。我已经设置了RESTAPI,它正在处理一些基本示例。然而,目前我们将ajax请求发布到自定义url时存在一些问题,在该视图中,我们可以执行以下操作 制作相关对象 调用一些相关函数 然而,现在我已经将一些功能切换到使用主干网和RESTAPI,我不确定这些功能应该放在哪里 例如,我想制作一条消息,当我制作一条消息时,我还制作了一条通知,并调用了一个函数向用户添加一些点。差不多 def ajax_send_message(request):
- 制作相关对象
- 调用一些相关函数
消息
,当我制作一条消息
时,我还制作了一条通知
,并调用了一个函数向用户添加一些点。差不多
def ajax_send_message(request):
## ... set up some variables ...
## Make the new message
message = Message(user=user, content=message)
message.save()
## Make the notification
notification = Notification(message=message)
notification.save()
## Give the user points
user.add_points_for_message();
return json_response({"status": "ok"})
现在——我应该用JavaScript来完成这一切吗?我还有一个消息
主干模型
// Create message backbone object
var msg = new Message({content:content, user: user});
// Post to server
msg.save();
// Add to backbone collection
messages.add(msg);
我已经研究了tastypie的不同部分,您似乎可以创建自定义URL端点,也可以进行验证,但这似乎不是调用相关方法的正确位置。调用相关的方法似乎与它的其余部分背道而驰——但是它们应该去哪里呢
如果我只想在创建对象时才向主干添加一些逻辑,那么这会发生什么呢 我建议的第一件事是将您的思维方式转换为基于事件的模型,在该模型中,您的代码会对事件做出反应。在上面的示例中,您将模型保存到服务器,然后立即将其添加到集合中。您怎么知道模型已正确保存?这种过程式编程方式在同步的服务器端编程方式中工作得更好 在客户端编程的异步世界中,您发出一个请求,然后设置回调,根据您正在侦听的事件确定接下来将发生什么。在您的情况下,您希望在成功保存消息时做出某种反应,对吗?您可以为保存操作定义成功回调,如下所示:
msg.save({
success: function(model, response, options) {
messages.add(model);
// code to add notification
// code to add points
}
});
基本上,您说的是“我想保存这个模型,然后监听一个成功事件。当事件发生时,执行以下代码。”另外请注意,我正在将API返回的模型添加到集合中,因为这正是保存到服务器的对象,所以添加它比添加您创建的模型更合适