注意:本文最初发布在我的 substack 上,网址为 HTTPs://andresalvareziglesias.substack.com/
这是 Django allauth 系列文章的最后一章。在这五章中,我们发现了一个小奇迹,一个非常有用的 django 组件来处理我们所有的身份验证需求。在本章中,我们将学习如何扩展基本的 django 用户模型以添加自定义字段。
章节列表
- 第 1 章 – django 中 auth 的一体化解决方案
- 第 2 章 – 如何安装和配置 django allauth
- 第 3 章 – 使用 django allauth 进行社交登录
- 第 4 章 – 自定义 django allauth ui
- 第 5 章 – 使用自定义字段扩展 django allauth 用户模型 ←这个!
django 用户模型
allauth 使用标准 django 用户模型,加上一些额外的表来处理社交登录和登录令牌。在 django 5 中,用户模型位于 django.contrib.auth 包中,并且有一堆预定义字段,您可以在官方文档中阅读:
有时,这对于我们的项目来说还不够。 django 允许您创建自定义用户表和用户管理器,来处理每个项目的需求。
我们将创建一个自定义用户表和一个自定义 usermanager 来处理我们的登录和注册过程。
创建自定义用户表
在我们的示例项目中打开 models.py 并编写如下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
我们可以定义一个从 django 的 abstractbaseuser 模型扩展而来的新 user 模型。在这个新模型中,我们可以添加我们需要的所有字段或自定义属性。
这些行很重要:
1 2 3 |
|
通过这些行,我们将用户模型与自定义 usermanager 链接起来,并且我们还定义了充当唯一“用户名”的字段。
记得在 admin.py 中注册新模型,以便通过 django 管理工具进行管理。
1 2 3 4 |
|
创建自定义用户管理器
再次打开我们的示例项目中的 models.py (或者如果需要的话,为自定义 usermanager 生成另一个文件)并编写如下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
在此示例中,我们扩展 baseusermanager 来创建自定义 usermanager。它创建了我们的新用户,并按照我们的预期填充自定义字段。
我们在自定义用户模型的 usermanager 之前定义,因此 django 知道在新用户创建期间要使用什么类。
使用自定义用户管理器和模型
在我们项目的设置文件中,我们可以使用以下命令设置项目的当前用户模型:
1 2 3 4 5 6 7 8 9 10 11 |
|
只需这个小更改(以及像往常一样所需的数据库迁移),我们就可以开始使用 allauth 注册视图创建用户,以查看我们闪亮的自定义 usermanager 及其正在运行的模型。快速又简单。
我们还禁用 allauth 用户名相关管理,因为我们在本例中使用电子邮件作为用户名。
这就是结局……还是没有?
我们已经到了 allauth 系列的最后一章。 allauth 是一个很棒的库,可以处理我们应用程序中的身份验证,并且由于其大量的预定义集成,使得使用社交登录变得特别容易。
这是本系列的最后一章,但我将在以后的文章中重新讨论 allauth。感谢您的阅读并祝您编码愉快!
关于名单
在 Python 和 docker 帖子中,我还将撰写其他相关主题(始终是技术和编程主题,我保证……祈祷),例如:
如果您发现一些有趣的技术、编程语言或其他什么,请告诉我!我总是乐于学习新东西!
关于作者
我是 andrés,一位来自帕尔马的全栈软件开发人员,正在踏上提高编码技能的个人旅程。我也是一位自行出版的奇幻作家,以我的名字出版了四本小说。有什么问题都可以问我哦!