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