REST API密码重置的Django表单

时间:2018-07-31 17:45:38

标签: django-rest-framework django-rest-auth django-rest-framework-jwt

我的情况:

Django应用程序+移动应用程序,使用Django REST api和rest-auth。 我想实现在移动应用程序上启动的密码重置交易。

我要遵循的工作流程是:

1)从手机执行密码重置请求->确定,没问题

2)Django向用户发送电子邮件->确定,没问题

3)转到电子邮件链接页面并创建新密码->确定,没问题 但是提供的用于创建新密码的表单是REST框架API表单

问题

1)我可以自定义此表格吗?我不知道该怎么办,因为此URL是可变的(带有UID和令牌)。有什么建议吗?

2)此工作流程是否合适,或者是否有更好的方法来管理重置密码工作流程?

在我的URL文件中,我有:

urlpatterns = [
    ...
    re_path(r'^password/reset/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
]

我应该在这里创建自定义视图吗?

在Django REST文档中,它说REST框架适用于返回API样式响应和常规HTML页面。但是我找不到适合我的案例的合适例子。

1 个答案:

答案 0 :(得分:0)

找到解决方案 对于可能有相同问题的人:

基本上我没有意识到allauth中有一个密码重置工作流,而rest_auth中有另一个工作流,但电子邮件中使用的链接令牌有所不同

allauth中的工作流可以满足我的需要(rest_auth中的工作流需要使用可浏览的api形式),仅需要从rest_auth请求的初始请求中启动它即可,该请求是我在views.py中使用此代码解决的:

xlsx.add_header('Content-Disposition', 'attachment', filename=filename)

该功能接收电子邮件并启动allauth工作流程