Si bien la respuesta aceptada a esta pregunta responde a la pregunta tal como fue redactada, creo que no resuelve el problema real en cuestión.
Para completar esta respuesta, deshabilitar la API HTML explorable se realiza quitándola de las clases de renderizador de esta manera:
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
)
}
Sin embargo, el problema real al que alude la pregunta es que las personas pueden publicar en la API sin autenticación. Si bien eliminar el formulario lo hace menos obvio, esta respuesta no protege los puntos finales de la API.
Como mínimo, alguien encuentra esta pregunta y busca proteger la API de envíos POST no autenticados o no autorizados; buscan cambiar los permisos de la API
Lo siguiente establecerá que todos los puntos finales sean de solo lectura a menos que el usuario esté autenticado.
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticatedOrReadOnly',
)
}
Si desea ocultar completamente la API a menos que el usuario haya iniciado sesión, también puede usarla IsAuthenticated
.
FYI: Esto también eliminará el formulario de la API de navegación HTML, ya que responde a los permisos. Cuando un usuario autenticado inicia sesión, el formulario estará disponible nuevamente.
Ronda de bonificación :
Solo habilite la API HTML explorable en 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
}