这是我的角色服务
function register(email, password, confirm_password, username){
// get works
// $http.get('/api/v1/accounts/');
return $http.post('/api/v1/accounts/',{
username: username,
password: password,
email: email
});
}
以下是我的viewset的create
函数
class AccountViewSet(viewsets.ModelViewSet):
lookup_field = 'username'
queryset = Account.objects.all()
serializer_class = AccountSerializer
def get_permissions(self):
if self.request.method == 'Post':
return (permissions.AllowAny(),)
def create(self, request):
print "this is not printing at all"
这是我的urls
router = DefaultRouter()
router.register(r'accounts', AccountViewSet)
urlpatterns = [
url(r'^$', views.index),
url(r'^api/v1/', include(router.urls)),
]
我使用此
使用csrf配置我的角度应用程序angular
.module('main')
.run(run);
run.$inject = ['$http'];
function run($http) {
console.log("I double check this runs");
$http.defaults.xsrfHeaderName = 'X-CSRFToken';
$http.defaults.xsrfCookieName = 'csrftoken';
}
但是每当我尝试post
使用$http
时,我都会
403 (FORBIDDEN)
虽然我能够使用get
我错过了什么吗?
编辑:
我认为get_permissions无法按预期工作
如果我在全局
中设置权限from rest_framework.permissions import AllowAny
permission_classes = (AllowAny,)
代码有效,但是,如果我使用get_permissions
,代码不起作用,当我追踪git repo并且似乎总是get_permissions
时,这是令人惊讶的在检查权限时被调用
答案 0 :(得分:1)
这看起来像一个简单的身份验证或授权(权限)问题。我在视图中看不到任何身份验证权限,因此我假设DRF使用默认值。默认情况下,匿名用户不得发布(I don't think, anyway)
django-rest-framework.org/api-guide/permissions