「Response resp api Djangoで.accepted_rendererが設定されていません」というエラーが表示されます。
私はDjango rest-api tutorial。Djangoバージョン1.8.3を使用しています。最初のパートまでチュートリアルに従いました。応答の送信の2番目の部分を続けましたが、エラーが発生しました
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()
メソッドを持つビューにのみ適用できます。
チュートリアル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>',
...
)
}
_
私はそれを別の方法で機能させました。ログインしているユーザーは、作成したスーパーユーザーです。だから私は管理者から別のユーザーを作成し、彼をスタッフユーザーにして、すべての権限を提供しました。次に、そのユーザーによってadminにログインしました。
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
ver 3.7.7の場合)、設定を次のように変更すると機能します。
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.AllowAny',
]
}
ここにはすでに多くの優れたソリューションがリストされています。 2番目のチュートリアルでも同じ問題に直面しました。それは示していました:
_
.queryset
_を設定しないビューまたは.get_queryset()
メソッドを持たないビューにDjangoModelPermissionsOrAnonReadOnlyを適用できません。
以下のように_settings.py
_を変更して_DEFAULT_PERMISSION_CLASSES
_を除外しました:
_REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
]
}
_
その後、正常に実行されます。これらの答えを見つける前にこれを試しました。