檢查它後綴需要是:Restangular移除不工作(被:DJANGO:{「細節」:「方法‘刪除’不允許的。」})
RestangularProvider.setRequestSuffix('/?format=json');
否則django的被折騰支持重定向給客戶,而它的工作 - 這是不正確的。
最後一個變化是增加:
RestangularProvider.setRequestSuffix('?format=json');
在你的模塊定義
,並把它從服務定義中刪除。通過這種方式,restangular可以通過django rest框架後端預期的方式構建url。因此,一個服務應該是建立在JS側:
var spaceJam = angular.module('spaceJam', ['ui.bootstrap', 'restangular'])
.config(function (RestangularProvider) {
RestangularProvider.setRequestSuffix('?format=json');
RestangularProvider.setResponseExtractor(function (response, operation) {
// blah
return response ;
})
})
spaceJam.factory('EventsResource', function (Restangular) {
return Restangular.all('events')
})
注入到你的控制器,並以列表形式訪問:
EventsResource.getList().then(function(events){
$scope.events = events
})
,並刪除項目(火HTTP刪除):
$scope.events[someRandomIndex].remove()
並且在服務器端,您需要確保ID正在返回。在django rest框架中,這包含了一個類似下面的解決方案,其中mixin用於包含id。
非常感謝任何對此有所考慮的人。
正在取得進展 - 顯然網址被返回而不是id。此鏈接http://abesto.net/django-rest-framework-add-id-to-in-hyperlinkedmodelserializer/概述添加一個mixin○,增加了id.in情況下,鏈接不會在今後的工作串行,這裏是有關片段:
class WithPkMixin(object):
def get_pk_field(self, model_field):
return self.get_field(model_field)
class EventSerializer(WithPkMixin, serializers.HyperlinkedModelSerializer):
class Meta:
model = Event
我認爲現在的問題是在我廠我的資源/ restangular資源定義作爲ID的方法錯了地方追加(我想是因爲我本來黑客):
spaceJam.factory('EventsResource', function (Restangular) {
return Restangular.all('events/?format=json')
})
因此字符串「?/格式= JSON」需要被去除,在其他點加回來。
更新看起來像發送的方法是根節點。我使用angularjs和restangular我的JavaScript看起來像:
spaceJam.factory('EventsResource', function (Restangular) {
return Restangular.all('events/?format=json')
})
var CalendarListCtrl = function($scope, $timeout, EventsResource) {
var timeout = 10000
$scope.events = []
$scope.refresh = function(){
EventsResource.getList().then(function(events){
$scope.events = events
})
}
var asychUpdate = function(){
$scope.refresh()
//$timeout(asychUpdate, timeout);
}
asychUpdate()
$scope.delete = function(urlToDelete) {
var eventToDelete = _.find($scope.events, function(one) {
return one.url === urlToDelete;
});
eventToDelete.remove();
$scope.refresh()
}
}
因此而remove方法看起來是記錄在案,以從列表中刪除一個項目的方式 - 它似乎並不具有正確的URL。
我正在學習django/python,因爲我爲與之建立了非營利性的網站建立了關聯關係。我能夠發佈元素列表/數組的元素。 「添加」(後)方法的作品,現在我試圖掛鉤刪除。我的服務器迴應是:
{"detail": "Method 'DELETE' not allowed."}
所以我假設我需要許可該動詞 - 但我不知道在哪裏。我正在使用DJANGO REST框架。我一直無法在谷歌上找到它,所以我要求這裏的善良和知識淵博的人。預先感謝您,請讓我知道是否需要發佈更多代碼。
urls.py
router = routers.DefaultRouter()
router.register(r'events', views.EventViewSet)
urlpatterns = patterns('',
(r'^', include(router.urls)),
)
models.py
class Event(models.Model):
title = models.CharField(max_length=200)
recurring = models.BooleanField()
day = models.CharField(max_length=20, blank=True)
date = models.DateField(null=True, blank=True)
time = models.TimeField()
description = models.CharField(max_length=500)
venue = models.CharField(max_length=200, blank=True)
venueAddress = models.CharField(max_length=200, blank=True)
venueCity = models.CharField(max_length=200, blank=True)
serializers.py
class EventSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Event
views.py
class EventViewSet(viewsets.ModelViewSet):
paginate_by = None
queryset = Event.objects.all()
serializer_class = EventSerializer
你打什麼網址?如果你使用'path/to/my/resource /'而不是'path/to/my/resource/PK /',它不知道要刪除哪個對象。 –
是,它似乎您試圖刪除根視圖,請檢查:https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/tests/test_generics.py#L93 – danihp
同意我想刪除根節點。那麼,我正在使用restangular來代理API - 讓我們看看它在做什麼。雖然我遵循了一個例子,但這一直證明了自己的傻瓜。 – akaphenom