为什么当我将@api_view添加到我的视图中时,我得到了403

时间:2018-01-01 18:12:50

标签: django django-rest-framework

我正在关注Django 2.0的Django REST框架教程,http://www.django-rest-framework.org/tutorial/2-requests-and-responses/。但是,当我添加@api_view装饰器时,我在视图上执行GET时得到403.

GET /attendance/api/youths/

HTTP 403 Forbidden
Allow: OPTIONS, GET
Content-Type: application/json
Vary: Accept

{
    "detail": "Invalid username/password."
}

这是我的代码。

@api_view(['GET'])
def youths_json(request, format=None):
    youths = Youth.objects.filter(attending=True)
    serializer = YouthSerializer(youths, many=True)
    return Response(serializer.data)

当我添加AllowAny权限时,它仍然无效。

@permission_classes((AllowAny, ))

有什么想法吗?我想让这个工作,我真的想使用ListAPIView

2 个答案:

答案 0 :(得分:2)

您忘记添加authentication_classes。使用必要的类添加@authentication_classes()。允许没有身份验证的用户使用空元组。

答案 1 :(得分:0)

装饰者的顺序很重要。

@api_view(['GET'])
@permission_classes((AllowAny, ))
def youths_json(request):
   # code here