Javascript 如何使用angularjs、Django、Django rest框架更新模型
我有一个帖子id的json表示:Javascript 如何使用angularjs、Django、Django rest框架更新模型,javascript,python,json,django,angularjs,Javascript,Python,Json,Django,Angularjs,我有一个帖子id的json表示: http://127.0.0.1:8000/update/1?format=json {"title": "about me", "content": "I like program", "created": "2014-11-29T18:07:18.173Z", "rating": 1, "id": 1} class UpdateModel(generics.RetrieveUpdateDestroyAPIView): lookup_f
http://127.0.0.1:8000/update/1?format=json
{"title": "about me", "content": "I like program", "created": "2014-11-29T18:07:18.173Z", "rating": 1, "id": 1}
class UpdateModel(generics.RetrieveUpdateDestroyAPIView):
lookup_field = 'id'
queryset = BlogPost.objects.all()
serializer_class = BlogPostSerializer
permission_classes = (AllowAny,)
我尝试通过单击按钮更新评级:
<button ng-click="click(post.id)">Click me</button>
快速整理
脚本
标记表明,如果http调用成功,则仅定义函数单击
我建议将click方法的定义移到success回调之外
您也可能会遇到竞速情况,即在单击实际按钮之前,尚未定义单击功能。不管怎样,您都希望将该函数定义移动到实际创建控制器的位置
建议的编辑(已移动单击http调用响应之外的定义):
更新:
- 将$resource注入控制器
- 已从单击函数参数中删除$resource
我从成功回调中删除了click函数,但什么都没有。我更新了答案,以向您展示我所说的内容,而不仅仅是显示您的格式化代码。我已再次更新,请参阅答案中的更新部分。也就是说,我对NGRealo不太熟悉,我会考虑将其中的一些逻辑重构成服务或工厂。我尝试过,但它没有帮助,如果您在哪里复制浏览器控制台的输出,这将是有帮助的。那里可能有一些角度错误信息。
class UpdateModel(generics.RetrieveUpdateDestroyAPIView):
lookup_field = 'id'
queryset = BlogPost.objects.all()
serializer_class = BlogPostSerializer
permission_classes = (AllowAny,)
var demoApp = angular.module('demoApp', ['ngResource']);
demoApp.controller('AllPosts', function($scope, $http, $resource) {
$scope.click = function(post_id) {
var Post = $resource('/update/:PostId ', {
PostId: post_id,
salutation: 'json'
});
post = Post.get({
PostId: post_id
}, function() {
post.rating = post.rating + 1;
post.$save();
});
};
$http.get('/blogpost/?format=json').success(function(data, status, headers, config) {
$scope.posts = data.results;
$scope.predicate = '-title';
}).error(function(data, status, headers, config) {});
})