如何解决dj-rest-auth与Django ReST Framework JSON API不兼容?
在Django(v3.1.2)ReST Framework(DRF v3.12.1)应用程序中,我正在使用 Django ReST Framework JSON API (DJA)扩展(v3.2.0)进行消费和生产JSON:API格式的资源(Content-Type应用程序/vnd.api+json)。此DJA扩展提供了自己的JSON解析器和渲染器。
此外,我选择了dj-rest-auth(v1.1.2)作为身份验证资源。但是,它似乎与DJA不兼容:当我以JSON:API格式发出登录请求时,例如
{
"data": {
"type": "LoginView","attributes": {
"username": "user","password": "pwd"
}
}
}
服务器无法呈现响应,但'dict' object has no attribute 'pk'
处的异常... python3.8/site-packages/rest_framework_json_api/renderers.py,line 502,in build_json_resource_obj
除外。调试该请求后,我发现DJA希望序列化程序输出serializer.instance
具有一个私钥(pk
)字段,DJA渲染器从该字段中得出元数据,例如应用程序/中必须存在的ID。 vnd.api + json资源。
我有两个问题:
- 这确实是两个库之间的不兼容,还是我只是以错误的方式将它们组合在一起?我需要配置什么,还是需要以某种方式扩展身份验证模型?
- 如果确实存在根本问题,是否有某种方法可以禁用DJA的身份验证资源?对我来说,似乎只能为整个Django服务器激活DJA,或者根本不激活DJA,但是仅为特定的Django应用程序不能激活DJA。有没有办法使用和返回身份验证端点的标准aplication / json内容?
解决方法
记录下来并结束这个问题:我没有发现问题所在。但是,上述确切的用例现在可以与以下库组合完美地协同工作:
- Python 3.9
- Django 3.1.2
- Django REST Framework 3.12.1
- Django REST Framework JSON API 4.0.0
- DJ-REST-Auth 1.1.2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。