我可以从AngularJS调用Django Manager方法吗?

时间:2015-01-26 19:16:42

标签: python django angularjs

是否可以从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,但如果有必要,不要重新编写它们。

由于

1 个答案:

答案 0 :(得分:1)

关键是Angular是一个客户端框架,而Django是服务器端。他们可以通过HTTP进行通信的唯一方式,这意味着如果您希望Angular调用Django管理器方法,则需要通过连接到视图的URL公开它。正如评论所说,实现这一点的一种方法是通过Django REST框架,但如果你的用例过于苛刻,你总是可以自己编写视图。