如何更改Django auth登录api的响应格式
我当前正在使用它的登录令牌创建端点,成功后,该端点将使用以下数据进行响应:如何更改Django auth登录api的响应格式,django,django-rest-framework,django-authentication,Django,Django Rest Framework,Django Authentication,我当前正在使用它的登录令牌创建端点,成功后,该端点将使用以下数据进行响应: { "access_token": "************", "token_type": "Bearer", "expires_in": 36000, "refresh_token": "************", "scope": "read write" } 但我想更改格式并将数据包装为该格式: { "status" : true, "data" :{ "access
{
"access_token": "************",
"token_type": "Bearer",
"expires_in": 36000,
"refresh_token": "************",
"scope": "read write"
}
但我想更改格式并将数据包装为该格式:
{
"status" : true,
"data" :{
"access_token": "************",
"token_type": "Bearer",
"expires_in": 36000,
"refresh_token": "************",
"scope": "read write"
}
}
我阅读了Django文档并尝试扩展库视图,但没有显示任何更改
from rest_framework_social_oauth2.views import TokenView
@api_view(('POST'))
def post(self, request, *args, **kwargs):
# Use the rest framework `.data` to fake the post body of the django request.
request._request.POST = request._request.POST.copy()
for key, value in request.data.items():
request._request.POST[key] = value
url, headers, body, status = self.create_token_response(request._request)
response = Response(data=json.loads(body), status=status)
for k, v in headers.items():
response[k] = v
return response
我建议创建并扩展DRF-social-oauth2,它有一个创建令牌的方法post: views.py: super方法将创建所需的令牌,然后您可以按照所示操作响应,如果需要,还可以使用大量其他方法操作响应 您还需要在url.py中添加url端点以进行身份验证:
from my_project/my_app import MyTokenView
urlpatterns = [
...
url(
r'^my_api/authenticate/$',
MyTokenView.as_view(),
name='authenticate'),
...
]
请记住:既然您正在扩展TokenView类,那么您也应该处理失败响应。我建议创建并扩展DRF-social-oauth2,它有一个方法post来创建令牌: views.py: super方法将创建所需的令牌,然后您可以按照所示操作响应,如果需要,还可以使用大量其他方法操作响应 您还需要在url.py中添加url端点以进行身份验证:
from my_project/my_app import MyTokenView
urlpatterns = [
...
url(
r'^my_api/authenticate/$',
MyTokenView.as_view(),
name='authenticate'),
...
]
请记住:既然您要扩展TokenView类,那么您也应该处理失败响应。Hi,您必须将name param值更改为authorize,它工作得非常好。多谢@user8169843很乐意帮助mate:。如果您愿意,您可以点击tic图标接受答案!当之无愧再次感谢!有没有办法返回user_id作为响应,我想我需要为它创建一个自定义后端?@user8169843如果你看到上面的帖子,它有一个名为request的参数。将其用作request.user.id或request.user.pk.Hi,必须更改name param值以进行授权,并且工作正常。多谢@user8169843很乐意帮助mate:。如果您愿意,您可以点击tic图标接受答案!当之无愧再次感谢!有没有办法返回user_id作为响应,我想我需要为它创建一个自定义后端?@user8169843如果你看到上面的帖子,它有一个名为request的参数。将其用作request.user.id或request.user.pk。