1. ホーム
  2. python

DjangoModelPermissions を、`.queryset` プロパティを持たないビューや、 `.get_queryset()` メソッドをオーバーライドするビューに適用できません。

2023-10-13 02:44:05

質問

Response resp api django"で.accepted_renderer not setというエラーが出てしまいます。

私はdjango rest-apiチュートリアルに沿っています。 私が使用している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 メソッドを使用します。

チュートリアル2はFBVを使用しているので、おそらくCBVに変換する必要があるか、簡単な方法はそのビューに異なるパーミッションクラスを指定することです。 あなたは .get_queryset() デコレータを使用している必要があります。そして 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)
    ...