dj-rest-auth 与 Django ReST Framework JSON API 不兼容?
dj-rest-auth incompatible with 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 格式(内容类型 application/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 渲染器从中派生元数据,例如必须存在于 application/vnd.api+json 资源.
我有两个问题:
- 这确实是两个库之间的不兼容,还是我只是以错误的方式组合了它们?是否需要配置某些内容,或者是否需要以某种方式扩展身份验证模型?
- 如果确实存在根本性问题,是否有某种方法可以禁用身份验证资源的 DJA?在我看来,DJA 似乎只能为整个 Django 服务器激活或根本不能激活,但它不能只为特定的 Django 应用程序激活。有没有办法为身份验证端点使用和 return 标准 aplication/json 内容?
记录并结束这个问题:我没有找出问题所在。但是,上面描述的确切用例现在可以完美地与以下库组合一起使用:
- Python 3.9
- Django 3.1.2
- Django REST 框架 3.12.1
- Django REST 框架 JSON API 4.0.0
- DJ-REST-Auth 1.1.2
在 Django (v3.1.2) ReST Framework (DRF v3.12.1) 应用程序中,我正在使用 Django ReST Framework JSON API (DJA) 扩展 (v3.2.0) 以 JSON:API 格式(内容类型 application/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 渲染器从中派生元数据,例如必须存在于 application/vnd.api+json 资源.
我有两个问题:
- 这确实是两个库之间的不兼容,还是我只是以错误的方式组合了它们?是否需要配置某些内容,或者是否需要以某种方式扩展身份验证模型?
- 如果确实存在根本性问题,是否有某种方法可以禁用身份验证资源的 DJA?在我看来,DJA 似乎只能为整个 Django 服务器激活或根本不能激活,但它不能只为特定的 Django 应用程序激活。有没有办法为身份验证端点使用和 return 标准 aplication/json 内容?
记录并结束这个问题:我没有找出问题所在。但是,上面描述的确切用例现在可以完美地与以下库组合一起使用:
- Python 3.9
- Django 3.1.2
- Django REST 框架 3.12.1
- Django REST 框架 JSON API 4.0.0
- DJ-REST-Auth 1.1.2