我应该将我的 Django 和 DRF 项目拆分成单独的项目吗?
Should I split my Django and DRF project into separate projects?
我目前正处于一个应用程序的规划阶段,该应用程序将包含标准
- 主管的 Django 部分,可以对员工用户执行所有 CRUD 操作,主要是添加、删除和查看统计信息 - 在浏览器中查看(没有前端框架,仅使用 Djangos 服务器端呈现),每次登录时的两步电子邮件身份验证,会话基于身份验证
- 员工的 DRF 部分 - API 连接到移动应用程序,基于设备 ID 进行身份验证。 (没有用户名或密码)
- DRF 部分供客户在员工做错事时联系主管 - 使用通过邮件传递的密码进行基于令牌或 JWT 的身份验证。
我不习惯将 Django 项目拆分为多个子项目(或为不同的项目使用相同的数据库),但由于不同的身份验证类型和事实,感觉项目的每个部分都应该是一个独立的应用程序同时使用 DRF 和标准 Django
任何有类似问题或有经验的人都可以建议我在这个项目中考虑不同的身份验证和总体不同的用户类型时应该怎么做?单独或多个项目的利弊是什么?
提前致谢!
你是在征求意见,所以如果问题被关闭,请不要感到惊讶,但我会用事实来回答:
使用同一数据库拆分不同的项目存在以下问题:共享迁移。他们都使用 built-in 用户,因此需要启用一些具有迁移功能的标准应用程序,并且他们不会 运行 在第二个和第三个项目中。
您将需要一个自定义用户模型来支持设备 ID 身份验证方法:您需要标准用户模型中没有的信息在身份验证时可用 - 这是创建自定义用户的第一个原因模型。与迁移和同步地狱联系在一起 code-wise。
Django 的 Authentication Backends 系统允许不同的认证方式同时存在,所以不需要拆分任何东西。如果您担心安全性,您始终可以使用不同的主机名和站点框架来添加额外的保护层,但它们仍然会使用相同的代码。
DRF 最初是对 Django view-based 方法的补充,而不是将项目的部分代码作为 API 提供的替代品。虽然当前使用更多的是“DRF 或模板”,但这是人们越来越二元化(“这个”或“那个”)并希望加入酷俱乐部的结果,但这与技术原因无关。他们可以而且总是能够 co-exist 因为他们解决了不同的问题。事实上,DRF 的通用视图使用 Django 的 CBV,而 built-in 可浏览 API 使用模板。此外,管理员是基于 template/view 的,使用 built-in 管理员开发应用程序或管理数据很方便。
我目前正处于一个应用程序的规划阶段,该应用程序将包含标准
- 主管的 Django 部分,可以对员工用户执行所有 CRUD 操作,主要是添加、删除和查看统计信息 - 在浏览器中查看(没有前端框架,仅使用 Djangos 服务器端呈现),每次登录时的两步电子邮件身份验证,会话基于身份验证
- 员工的 DRF 部分 - API 连接到移动应用程序,基于设备 ID 进行身份验证。 (没有用户名或密码)
- DRF 部分供客户在员工做错事时联系主管 - 使用通过邮件传递的密码进行基于令牌或 JWT 的身份验证。
我不习惯将 Django 项目拆分为多个子项目(或为不同的项目使用相同的数据库),但由于不同的身份验证类型和事实,感觉项目的每个部分都应该是一个独立的应用程序同时使用 DRF 和标准 Django
任何有类似问题或有经验的人都可以建议我在这个项目中考虑不同的身份验证和总体不同的用户类型时应该怎么做?单独或多个项目的利弊是什么?
提前致谢!
你是在征求意见,所以如果问题被关闭,请不要感到惊讶,但我会用事实来回答:
使用同一数据库拆分不同的项目存在以下问题:共享迁移。他们都使用 built-in 用户,因此需要启用一些具有迁移功能的标准应用程序,并且他们不会 运行 在第二个和第三个项目中。
您将需要一个自定义用户模型来支持设备 ID 身份验证方法:您需要标准用户模型中没有的信息在身份验证时可用 - 这是创建自定义用户的第一个原因模型。与迁移和同步地狱联系在一起 code-wise。
Django 的 Authentication Backends 系统允许不同的认证方式同时存在,所以不需要拆分任何东西。如果您担心安全性,您始终可以使用不同的主机名和站点框架来添加额外的保护层,但它们仍然会使用相同的代码。
DRF 最初是对 Django view-based 方法的补充,而不是将项目的部分代码作为 API 提供的替代品。虽然当前使用更多的是“DRF 或模板”,但这是人们越来越二元化(“这个”或“那个”)并希望加入酷俱乐部的结果,但这与技术原因无关。他们可以而且总是能够 co-exist 因为他们解决了不同的问题。事实上,DRF 的通用视图使用 Django 的 CBV,而 built-in 可浏览 API 使用模板。此外,管理员是基于 template/view 的,使用 built-in 管理员开发应用程序或管理数据很方便。