Ich erhalte die Fehlermeldung ".accepted_renderer nicht auf Response bzw. Django gesetzt".
Ich folge dem Django Rest-Api-Tutorial. Django-Version Ich verwende 1.8.3 Ich folgte dem Tutorial bis zum ersten Teil. Es hat richtig funktioniert. Aber als ich den zweiten Teil mit dem Senden der Antwort fortsetzte, bekam ich einen Fehler
Cannot apply DjangoModelPermissions on a view that does not have `.queryset` property or overrides the `.get_queryset()` method.
Dann habe ich andere Möglichkeiten ausprobiert
.accepted_renderer not set on Response resp api Django
Bitte hilf mir. Ich denke, seine Erlaubnisfrage.
Sie haben wahrscheinlich DjangoModelPermissions
in Ihren Einstellungen als Standardberechtigungsklasse festgelegt. So etwas wie:
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.DjangoModelPermissions',
)
}
DjangoModelPermissions
kann nur auf Ansichten angewendet werden, die eine .queryset
-Eigenschaft oder eine .get_queryset()
-Methode haben.
Da in Tutorial 2 FBVs verwendet werden, müssen Sie es wahrscheinlich in ein CBV konvertieren. Alternativ können Sie eine andere Berechtigungsklasse für diese Ansicht angeben. Sie müssen den Dekorator api_view
in Ihrer Ansicht verwenden. Sie können dann permissions
wie folgt definieren:
from rest_framework.decorators import api_view, permission_classes
from rest_framework import permissions
@api_view([..])
@permission_classes((permissions.AllowAny,))
def my_view(request)
...
Um den Renderer-Fehler zu beheben, müssen Sie den entsprechenden Renderer zu Ihren Einstellungen hinzufügen.
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.<corresponding_renderer>',
...
)
}
Ich habe es auf eine andere Art und Weise zum Laufen gebracht. Mein angemeldeter Benutzer war der Superuser, den ich erstellt habe. Also habe ich einen anderen Benutzer von Admin erstellt und ihn zum Benutzer des Benutzers gemacht und alle Berechtigungen erteilt. Dann von diesem Benutzer bei admin angemeldet.
In der Datei settings.py habe ich den Code geändert.
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',
]
}
Und es hat funktioniert.
Die Lösung für mich wurde von @ProfNandaa oben angegeben
Quick Fix, kommentieren Sie die .__ aus. 'rest_framework.renders.DjangoModelPermissions' Zeile für jetzt - wenn Sie folgen dem DRF-Tutorial 2; und vielleicht hatten Sie das in .__ hinzugefügt. settings.py während des Homepage-Beispiels.
Ich hatte dies zwar aus dem Homepage-Beispiel hinzugefügt, bevor ich mit dem Tutorial begonnen hatte, und schlug das gleiche Problem.
Wenn ich den fehlerhaften Code auskommentierte
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.DjangoModelPermissions',
)
}
von settings.py hat alles wieder gut funktioniert.
Hier sind bereits viele gute Lösungen aufgeführt. Im zweiten Tutorial stand ich vor demselben Problem. Es zeigte sich:
DjangoModelPermissionsOrAnonReadOnly kann nicht auf eine Ansicht angewendet werden, die .__ tut.
.queryset
nicht gesetzt oder eine.get_queryset()
-Methode haben.
Ich habe den settings.py
geändert, um DEFAULT_PERMISSION_CLASSES
wie folgt auszuschließen:
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
]
}
Dann läuft es erfolgreich. Ich habe es versucht, bevor ich diese Antworten gefunden habe.
In meinem Fall (für Tutorial 2, djangorestframework
ver 3.7.7) funktioniert es, wenn ich folgende Einstellungen ändere:
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.AllowAny',
]
}