【发布时间】:2016-02-11 08:32:35
【问题描述】:
我正在尝试使用 DRF 构建一个 api。
Client 是一个由 AngularJS 支持的 cordova 应用程序。
当我尝试使用 $resource 发布一些用户对象时,我收到了来自 django 的 403 禁止响应。
以下是我认为与该问题相关的一些代码:
API 调用:
$rootScope.user =
User.get({id: response.id}).$promise.then(angular.noop, function (e) {
if (e.status == 404) { //If not found, register the user.
$rootScope.user = new User();
Object.keys(response).forEach(function (key) {
$rootScope.user[key] = response[key];
});
$rootScope.user.$save(); //Fails here! 403.
}
else
console.log(JSON.stringify(e.msg));
});
用户工厂:
.factory('User', function ($resource, serverConstants) {
return $resource(serverConstants.serverUrl + '/users/:id');
})
django 视图:
# Users
class UserSerializer(serializers.HyperlinkedModelSerializer):
id = serializers.CharField(max_length=100,required=True)
email = serializers.EmailField(required=False,allow_blank=True)
joined = serializers.DateField(required=False,default=datetime.date.today)
class Meta:
model = models.User
fields = ('joined', 'id', 'email')
def get_validation_exclusions(self):
exclusions = super(UserSerializer, self).get_validation_exclusions()
return exclusions + ['owner']
class UserViewSet(viewsets.ModelViewSet):
queryset = models.User.objects.all()
serializer_class = UserSerializer
PS:我已将 Angular 配置为使用 CSRF cookie 和 django 以允许 CORS
提前致谢!
【问题讨论】:
-
除了 403 之外,您还有其他关于响应的信息吗?内容是什么?
-
我不确定,但我认为这是回复:
{"detail":"Authentication credentials were not provided."}