【发布时间】:2019-06-16 18:50:55
【问题描述】:
我想根据文档使用djoser 来重置密码功能:
PASSWORD_RESET_CONFIRM_URL
您的前端密码重置页面的 URL。它应该包含 {uid} 和 {token} 占位符,例如
#/password-reset/{uid}/{token}。你应该 传递 uid 和 token 来重置密码确认端点。
我做了以下事情:
PASSWORD_RESET_CONFIRM_URL': 'reset/password/reset/confirm/{uid}/{token}',
网址
url(r'^reset/password/reset/confirm/(?P<uid>[\w-]+)/(?P<token>[\w-]+)/$', PasswordResetView.as_view(),),
查看:
class PasswordResetView(APIView):
def get (self, request, uid, token):
post_data = {'uid': uid, 'token': token}
return Response(post_data)
在我的邮件中,我得到了这个链接:http://127.0.0.1:8000/reset/password/reset/confirm/Mjk/538-954dccbc1b06171eff4d
这很明显,我会得到:
{
"uid": "Mjk",
"token": "538-954dccbc1b06171eff4d"
}
作为我的输出,但我想在用户单击邮件中的链接时转到auth/password/reset/confirm。
【问题讨论】:
-
您是否将电子邮件正文作为 html 页面发送?
-
我不确定你的意思。您希望电子邮件中的 url 为
auth/password/reset/confirm吗?那么为什么不把它放在 PASSWORD_RESET_CONFIRM_URL 设置中呢?它应该立即起作用。 -
@Ahtisham 是的,电子邮件正文是 html 页面
-
@KamilNiski 如果我在电子邮件中发送
auth/password/reset/confirm,那么我将无法获得 uid 和令牌来知道用户是谁。而auth/password/reset/confirm是一个POSTurl,其字段为uid、token和new_password
标签: django django-rest-framework djoser