이것은 매우 간단한 질문 일 뿐이지 만 DRF 문서에서 공백을 계속 사용합니다.일부 사용자에게 일부 POST 거부
models.py :
class DataPoint(models.Model):
value = models.IntegerField()
...
serializers.py :
class DataPointSerializer(serializers.ModelSerializer):
class Meta:
model = DataPoint
fields = ('value', ...)
views.py :
class DataPointViewSet(viewsets.ModelViewSet):
queryset = DataPoint.objects.all()
serializer_class = DataPointSerializer
permission_classes = [permissions.IsAuthenticated, ]
...
내가 모든 로그인 한 사용자가 얻을 수있을 싶어 이 뷰 집합에 POST합니다. 이것은 사용자 정의 유효성 검사기 또는 허가 일이다
:
if request.data['value'] > 100 and not request.user.is_staff:
raise PermissionDeniedValidationErrorWhatareyoudoing("Santaz gonna know")
내 질문에 종기 : 유일한 제한은 아닌 직원의 사용자가 100
아래 값을 유지하기 위해 이런 일을해야한다는 것입니다?
DRF (특히 mixins.CreateModelMixin
)가 권한을 확인하지 않고 POST 된 데이터를 행복하게 저장한다는 것은 문제입니다. 나중에 만 사용 권한을 문의합니다 (get_object()
, AFAICS).
유효성 검사기의 문제점은 request
에 액세스 할 수 없다는 것이며 거기에 request
을 삽입하려고 과도한 것처럼 보입니다.
무엇이 누락 되었습니까?
P.
PUT
및 PATCH
에도 동일한 제한을 적용해야합니다.