是否可以从AngularJS调用Django Manager方法?
例如像AngularJS中调用的工厂PUT方法:
var app = angular.module('app', ['ngResource', 'ngRoute']);
// Some APIs expect a PUT request in the format URL/object/ID
// Here we are creating an 'update' method
app.factory('Notes', ['$resource', function($resource) {
return $resource('/notes/:id', null,
{
'update': { method:'PUT' }
});
}]);
// snipped ...
Notes.update({ id:$id }, note);
但是对于Django的get_or_create
例如?
所以在Django中不是这样的:
obj, created = MyObject.objects.get_or_create(**kwargs)
我想做点什么:
app.factory('Notes', ['$resource', function($resource) {
return $resource('/notes/:id', null,
{
'get_or_create': // some code here but do not know what??
});
}]);
// snipped ...
Notes.get_or_update({ id:$id }, note);
我想这样做是因为我已经编写了大量的自定义Django Managers,并希望将AngularJS用于UI,但如果有必要,不要重新编写它们。
由于
答案 0 :(得分:1)
关键是Angular是一个客户端框架,而Django是服务器端。他们可以通过HTTP进行通信的唯一方式,这意味着如果您希望Angular调用Django管理器方法,则需要通过连接到视图的URL公开它。正如评论所说,实现这一点的一种方法是通过Django REST框架,但如果你的用例过于苛刻,你总是可以自己编写视图。