Die akzeptierte Antwort auf diese Frage beantwortet zwar die Frage, wie sie formuliert wurde, aber ich bin der Meinung, dass sie das eigentliche Problem nicht löst.
Der Vollständigkeit halber wird diese Antwort deaktiviert, indem die durchsuchbare HTML-API wie folgt aus den Renderer-Klassen entfernt wird:
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
)
}
Das eigentliche Problem, auf das die Frage anspielt, ist jedoch, dass Personen ohne Authentifizierung Beiträge an die API senden können. Während das Entfernen des Formulars weniger offensichtlich ist, schützt diese Antwort die API-Endpunkte nicht.
Zumindest findet jemand diese Frage und möchte die API vor nicht authentifizierten oder nicht autorisierten POST-Übermittlungen schützen. die wollen das ändern API-Berechtigungen
Im Folgenden werden alle Endpunkte als schreibgeschützt festgelegt, sofern der Benutzer nicht authentifiziert ist.
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticatedOrReadOnly',
)
}
Wenn Sie die API vollständig ausblenden möchten, sofern der Benutzer nicht angemeldet ist, können Sie sie auch verwenden IsAuthenticated
.
Zu Ihrer Information: Dadurch wird auch das Formular aus der durchsuchbaren HTML-API entfernt, da es auf Berechtigungen reagiert. Wenn sich ein authentifizierter Benutzer anmeldet, ist das Formular wieder verfügbar.
Bonusrunde :
Aktivieren Sie die durchsuchbare HTML-API nur in dev:
DEFAULT_RENDERER_CLASSES = (
'rest_framework.renderers.JSONRenderer',
)
if DEBUG:
DEFAULT_RENDERER_CLASSES = DEFAULT_RENDERER_CLASSES + (
'rest_framework.renderers.BrowsableAPIRenderer',
)
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticatedOrReadOnly',
),
'DEFAULT_RENDERER_CLASSES': DEFAULT_RENDERER_CLASSES
}