Я строю конечные точки, используя DRF (Django Rest Framework).
django==2.1.5
djangorestframework==3.9.1
django-rest-auth
djangorestframework-jwt
У меня есть модель "Item", и я хочу установить разные access_classes для запросов GET и POST.
Вот как я это делаю:
@csrf_exempt
@api_view(['GET', 'POST'])
@authentication_classes([TokenAuthentication])
@permission_classes([AllowAny])
def item_list(request):
if request.method == 'GET':
items = Item.objects.all()
serializer = ItemSerializer(items, many=True)
return JsonResponse(serializer.data, safe=False)
elif request.method == 'POST':
data = JSONParser().parse(request)
serializer = ItemSerializer(data=data)
if serializer.is_valid():
serializer.save()
return JsonResponse(serializer.data, status=201)
return JsonResponse(serializer.errors, status=400)
Я хочу использовать одну конечную точку для всех методов, например:
urlpatterns = [
path('api/item/', views.item_list),
path('api/item/<int:pk>/', views.item_details),
]
Я хочу AllowAny
пользователя для GET
метода запроса
и проверьте, если isAdminUser
для POST
метод запроса
Могу ли я сделать это как во Flask, то есть один декоратор для одного метода?