Django Rest Framework аутентификация сессии по умолчанию просмотр JSON разбор

Я делаю аутентификацию пользовательской сессии через DRF, React и Axios. Также я использую Postman для тестирования конечных точек. Вопрос в том, как заставить стандартный вид логина из rest_framework.urls работать с форматом JSON. Когда я отправляю данные пользователя (имя пользователя и пароль) через радиокнопку form-data внутри Postman, все работает как надо. Но когда я использую формат JSON как в Postman, так и в Axios, конечная точка DRF возвращает такую html-страницу:

enter image description here

settings.py

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.SessionAuthentication',
    ],
    'DEFAULT_PARSER_CLASSES': [
        'rest_framework.parsers.JSONParser',
    ]
}

urls.py

urlpatterns = [
    path('drf-auth/', include('rest_framework.urls')),
]

Мои JSON-данные

{"username": "admin", "password": "admin"}

По умолчанию rest_framework.urls представление входа принимает данные формы и возвращает ответ в формате JSON. Не принимает данные в формате JSON. Чтобы исправить это, создайте пользовательское представление логина, а затем используйте функции authenticate и login в представлении. Это позволит принимать данные в формате JSON.

views.py

class CustomLoginView(APIView):
    def post(self, request):
        user=authenticate(request, username=request.data.get("username"), password=request.data.get("password"))
        if user is not None:
            login(request, user)
            return Response... # success response
        else:
            return Response .... # error response

Вернуться на верх