Django Rest Framework 会话身份验证默认视图 JSON Parse

问题描述 投票:0回答:1

我正在通过 DRF、React 和 Axios 进行用户会话身份验证。我还使用 Postman 来测试我的端点。所以问题是如何使rest_framework.urls 的默认登录视图使用JSON 格式。当我通过 Postman 内的表单数据单选按钮发送用户数据(用户名和密码)时,一切都按预期工作。但是当我在 Postman 和 Axios 中使用 JSON 格式时,DRF 端点返回这样的 html 页面:

设置.py

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

url.py

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

我的 JSON 数据

{"username": "admin", "password": "admin"}
json django django-rest-framework axios postman
1个回答
0
投票

默认

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

© www.soinside.com 2019 - 2024. All rights reserved.