`.queryset` 속성이 없거나`.get_queryset ()`메서드를 재정의하는 뷰에는 DjangoModelPermissions를 적용 할 수 없습니다.
".accepted_renderer가 Response resp api django에 설정되지 않았습니다"라는 오류가 발생합니다.
django rest-api 튜토리얼을 따르고 있습니다. Django 버전 1.8.3을 사용하고 있으며 첫 번째 부분까지 튜토리얼을 따랐습니다. 제대로 작동했습니다. 하지만 응답을 보내는 두 번째 부분을 계속했을 때 오류가 발생했습니다.
Cannot apply DjangoModelPermissions on a view that does not have `.queryset` property or overrides the `.get_queryset()` method.
그런 다음 다른 방법을 시도했습니다.
.accepted_renderer not set on Response resp api django
제발 도와주세요. 허가 문제라고 생각합니다.
설정 DjangoModelPermissions
에서 기본 권한 클래스로 설정했을 수 있습니다. 다음과 같은 것 :
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.DjangoModelPermissions',
)
}
DjangoModelPermissions
.queryset
속성 또는 .get_queryset()
메서드 가있는보기에만 적용 할 수 있습니다 .
Tutorial 2는 FBV를 사용하므로이를 CBV로 변환해야하거나 해당 뷰에 대해 다른 권한 클래스를 지정하는 쉬운 방법이 있습니다. api_view
뷰 에서 데코레이터를 사용해야합니다 . 그런 다음 permissions
아래와 같이 정의 할 수 있습니다.
from rest_framework.decorators import api_view, permission_classes
from rest_framework import permissions
@api_view([..])
@permission_classes((permissions.AllowAny,))
def my_view(request)
...
렌더러 오류를 해결하려면 해당 렌더러를 설정에 추가해야합니다.
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.<corresponding_renderer>',
...
)
}
다른 방식으로 작동하게했습니다. 로그인 한 사용자는 내가 만든 수퍼 유저입니다. 그래서 나는 관리자로부터 다른 사용자를 만들고 그를 직원 사용자로 만들고 모든 권한을 제공했습니다. 그런 다음 해당 사용자가 관리자에 로그인했습니다.
settings.py 파일에서 코드를 변경했습니다.
REST_FRAMEWORK = {
# Use Django's standard `django.contrib.auth` permissions,
# or allow read-only access for unauthenticated users.
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
]
}
그리고 그것은 효과가있었습니다.
나를위한 해결책은 위의 @ProfNandaa가 지적한대로였습니다.
빠른 수정, 지금은 'rest_framework.renders.DjangoModelPermissions'줄을 주석 처리하십시오. DRF 자습서 2를 따르는 경우; 아마도 홈페이지 예제 중에 settings.py에 추가했을 것입니다.
나는 실제로 튜토리얼을 시작하기 전에 홈페이지 예제에서 이것을 추가했으며 동일한 문제를 겪었습니다.
문제가되는 코드를 주석 처리했을 때
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.DjangoModelPermissions',
)
}
settings.py에서 모든 것이 다시 잘 작동했습니다.
제 경우에는 (튜토리얼 2, djangorestframework
버전 3.7.7의 경우) 설정을 다음과 같이 변경하면 작동합니다.
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.AllowAny',
]
}
여기에 이미 나열된 좋은 솔루션이 많이 있습니다. 두 번째 튜토리얼에서도 같은 문제에 직면했습니다. 그것은 보여주고 있었다 :
설정하지 않는 뷰에 DjangoModelPermissionsOrAnonReadOnly를 적용 할 수 없습니다
.queryset
또는이.get_queryset()
방법을.
다음과 같이 settings.py
제외하도록 변경했습니다 DEFAULT_PERMISSION_CLASSES
.
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
]
}
Then it runs successfully. I tried this before I have found these answers.
ReferenceURL : https://stackoverflow.com/questions/31335736/cannot-apply-djangomodelpermissions-on-a-view-that-does-not-have-queryset-pro
'programing' 카테고리의 다른 글
C ++ 구조의 이상한 동작 [1 부] (0) | 2021.01.19 |
---|---|
syntastic vim 플러그인에 C ++ 11 지원을 추가하는 방법은 무엇입니까? (0) | 2021.01.19 |
Flask에서 request.args는 무엇이며 어떻게 사용됩니까? (0) | 2021.01.19 |
Android Room Persistences 라이브러리 및 Kotlin (0) | 2021.01.19 |
쿠키 JSESSIONID 이름 변경 (0) | 2021.01.19 |