gpt4 book ai didi

python - Angular post返回403而get在Django中使用Django Rest Framework返回301

转载 作者:太空宇宙 更新时间:2023-11-04 05:46:15 27 4
gpt4 key购买 nike

这是我的 angular.service

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
});
}

这是我的 create我的 View 集的功能

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 应用程序

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检查权限时总是被调用

最佳答案

这看起来像是一个简单的身份验证或授权(权限)问题。我在您的 View 中没有看到任何身份验证权限,因此我假设 DRF 使用的是默认设置。默认不允许匿名用户发帖(我不认为,反正) django-rest-framework.org/api-guide/permissions

关于python - Angular post返回403而get在Django中使用Django Rest Framework返回301,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32161070/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com