重置密码接口实现
在本节课中,我们将介绍如何实现用户忘记密码的功能。我们使用Djoser模块提供的接口来实现此功能。
1. 设置重置密码链接
在使用重置密码功能时,我们需要设置一个参数 PASSWORD_RESET_CONFIRM_URL,用于确定发送重置密码链接的地址。在 settings.py 文件中,我们可以通过以下方式进行配置:
# Djoser配置
DJOSER = {
'USER_ID_FIELD': 'username',
'LOGIN_FIELD': 'email',
'SEND_ACTIVATION_EMAIL': True,
'ACTIVATION_URL': 'activate/{`uid`}/{`token`}',
'SEND_CONFIRMATION_EMAIL': True,
'PASSWORD_RESET_CONFIRM_URL': 'password_reset/{`uid`}/{`token`}',
'PASSWORD_RESET_CONFIRM_RETYPE': True,
'PASSWORD_RESET_SHOW_EMAIL_NOT_FOUND': True,
'SET_PASSWORD_RETYPE': True,
'SERIALIZERS': {
"user_create": "account.serializers.CustomUserCreateSerializer",
}
}
上述 djoser 的配置参数用于自定义和配置 djoser 的行为。以下是对每个配置参数的解释:
-
USER_ID_FIELD:- 指定用作用户标识的字段。在这个例子中,用户标识字段被设置为 'username',表示用户通过其用户名进行标识。
-
LOGIN_FIELD:- 指定用于用户登录的字段。在这个例子中,用户登录时需要使用电子邮件地址进行身份验证。
-
SEND_ACTIVATION_EMAIL:- 一个布尔值,指示是否在用户注册后发送激活邮件。如果设置为
True,用户将收到包含激活链接的邮件,需要点击链接以激活其账户。
- 一个布尔值,指示是否在用户注册后发送激活邮件。如果设置为
-
ACTIVATION_URL:- 指定用户激活链接的 URL 格式。在这个例子中,激活链接的格式为 'activate/uid/token'。
-
SEND_CONFIRMATION_EMAIL:- 一个布尔值,指示是否在用户更改电子邮件地址后发送确认邮件。
-
PASSWORD_RESET_CONFIRM_URL:- 指定重置密码确认链接的 URL 格式。在这个例子中,确认链接的格式为 'password_reset/uid/token'。
-
PASSWORD_RESET_CONFIRM_RETYPE:- 一个布尔值,指示在重置密码时是否要求用户重新输入新密码进行确认。
-
PASSWORD_RESET_SHOW_EMAIL_NOT_FOUND:- 一个布尔值,指示在密码重置时,如果找不到与提供的电子邮件地址匹配的用户,是否显示电子邮件地址未找到的错误信息。
-
SET_PASSWORD_RETYPE:- 一个布尔值,指示在设置密码时是否要求用户重新输入密码进行确认。
-
SERIALIZERS:- 一个字典,用于指定
djoser使用的序列化器。在这个例子中,使用了自定义的CustomUserCreateSerializer作为用户创建的序列化器。
- 一个字典,用于指定
这些配置参数允许你根据你的项目需求自定义和配置 djoser 的行为。
请求接口
djoser自带的接口,我们只需要按照规则请求即可。发送邮件修改密码的接口如下所示:

如果邮箱未注册,提示错误如下所示。

获取'uid'和token后,可以重置密码,接口如下所示。

【大熊课堂精品课程】
Python零基础入门动画课: https://www.bilibili.com/cheese/play/ss7988
Django+Vue:全栈开发: https://www.bilibili.com/cheese/play/ss8134
PyQT6开发桌面软件: https://www.bilibili.com/cheese/play/ss12314
Python办公自动化: https://www.bilibili.com/cheese/play/ss14990
Cursor AI编程+MCP:零基础实战项目课: https://www.bilibili.com/cheese/play/ss105194189
Pandas数据分析实战: https://www.bilibili.com/cheese/play/ss734522035
AI大模型+Python小白应用实战: https://www.bilibili.com/cheese/play/ss3844