密码重置 django-allauth 和 django-rest-auth

2023-12-25

我无法解决这个问题。阅读了很多解决方案,但似乎找不到适合我的正确组合。

我想从我的(android/iOS)应用程序中启动用户密码重置流程。 我想我需要django-rest-auth为此,要公开一个 API 端点,如下所示:

from rest_auth.views import PasswordResetView

urlpatterns = [
    path('password/reset/', PasswordResetView.as_view(), name='rest_password_reset'),
]

现在发布到http://127.0.0.1:8000/password/reset/JSON 负载为{ "email": "[email protected] /cdn-cgi/l/email-protection" }给出错误:django.urls.exceptions.NoReverseMatch: Reverse for 'password_reset_confirm' not found.

现在,我正在为下一部分而苦苦挣扎。我发现password_reset_confirm定义在django.contrib.auth但我不想暴露admin-like与用户的接口。

我想使用allauth PasswordResetFromKeyView.

所以,定义password_reset_confirm as:

    path('password/reset/<uidb64>/<token>/',
         PasswordResetFromKeyView.as_view(),
         name='password_reset_confirm'
         ),

作品。将发送一封包含重置 URL 的电子邮件。但现在,在该 URL 之后,我遇到了另一个错误:PasswordResetFromKeyView.dispatch() missing 2 required positional arguments: 'uidb36' and 'key'

好的,很明显,改变了password_reset_confirm路径参数来自<uidb64> and <token> to <uidb36> and <key>。 比错误移动到password_reset_email.html因为其中的论点{{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %} 好的,也将其更改为uidb32=uid and key=token导致 HTML 页面显示“BAD TOKEN”。

现在,我完全不知所措了。 如何配置 django-allauth 和 django-rest-auth 以便我可以执行休息请求来发送包含有效 URL 的电子邮件,用户可以使用该 URL 来更改他/她的密码?


UPDATE:我刚刚看到 django-allauth 不再维护,您应该切换到:dj-rest-auth。现在这个过程又重新开始......

好的,以下作品,发布供参考,因为我在这方面浪费了很多时间。

Pipfile:

[packages]
django = "~=3.0"
django-allauth = "0.50.0"
django-rest-auth = "0.9.5"

urls.py:

from django.contrib import admin
from django.urls import path, re_path

# Register
from allauth.account.views import ConfirmEmailView
from rest_auth.registration.views import RegisterView, VerifyEmailView

# Password reset
from rest_auth.views import PasswordResetView, PasswordResetConfirmView

urlpatterns = [
    path('admin/', admin.site.urls),

    re_path(r'^confirm-email/(?P<key>[-:\w]+)/$',
            ConfirmEmailView.as_view(), name='account_confirm_email'),

    path('user/register/',
         RegisterView.as_view(),
         name='rest_register'
         ),
    path('user/verify-email/',
         VerifyEmailView.as_view(),
         name='rest_verify_email'
         ),

    # Password reset
    path('user/password/reset/',
         PasswordResetView.as_view(),
         name='rest_password_reset'
         ),

    path('user/password/reset/confirm/<uidb64>/<token>/',
         PasswordResetConfirmView.as_view(),
         name='password_reset_confirm'),
]

我可以发布到:http://127.0.0.1:8000/user/password/reset/JSON 负载为{ "email": "[email protected] /cdn-cgi/l/email-protection" }.

生成一封带有重置 URL 的电子邮件,单击此 URL 将用户带到 Django 可浏览的 API 页面:

但是,此页面并不打算向用户公开。所以我的下一个问题是关于 S.O.是:如何创建自定义页面供用户重置密码? https://stackoverflow.com/questions/71815707/customize-django-allauth-django-rest-auth-password-reset-confirm

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

密码重置 django-allauth 和 django-rest-auth 的相关文章

  • 使用 keras 澄清 Yolo v3 模型输出

    我将 yolo v3 模型与 keras 一起使用 该网络为我提供了形状如下的输出容器 1 13 13 255 1 26 26 255 1 52 52 255 所以我找到了这个link https www cyberailab com ho
  • 使用python编辑html,但是lxml将漂亮的html实体转换为奇怪的编码

    我正在尝试使用 python 带有 pyquery 和 lxml 来更改和清理一些 html Eg html div p It 146 s a spicy meatball p div lxml html clean 函数 clean ht
  • 如何同时有效地运行多个 Pytorch 进程/模型? Traceback:分页文件太小,无法完成此操作

    背景 我有一个非常小的网络 我想用不同的随机种子进行测试 该网络几乎只使用了我的 GPU 计算能力的 1 因此理论上我可以同时运行 50 个进程来同时尝试许多不同的种子 Problem 不幸的是我什至无法在多个进程中导入 pytorch 当
  • 如何用pygame画一条虚线?

    我需要在坐标系上绘制正弦波和余弦波 就像在this https i stack imgur com DGI8g png图片 除了没能代表以外 我所有的工作都做得很好虚线和曲线与 pygame 一致 我有与我需要的类似的东西 但我怎样才能让它
  • 清理 MongoDB 的输入

    我正在为 MongoDB 数据库程序编写 REST 接口 并尝试实现搜索功能 我想公开整个 MongoDB 接口 我确实有两个问题 但它们是相关的 所以我将它们放在一篇文章中 使用 Python json 模块解码不受信任的 JSON 是否
  • 在Python中,如何通过去掉括号和大括号来打印Json

    我想以一种很好的方式打印 Json 我想去掉方括号 引号和大括号 只使用缩进和行尾来显示 json 的结构 例如 如果我有一个像这样的 Json A A1 1 A2 2 B B1 B11 B111 1 B112 2 B12 B121 1
  • 如何去除html源代码中的空格

    我正在使用 django 和 python 在模板文件中 我有一个下拉列表 如下所示 有用 唯一的问题是源 html 代码之间有很多空白 有什么办法可以去除空白吗 谢谢 for lang ele in video languages all
  • 关于具有自定义损失的 3 输出 ANN 的加权

    我正在尝试定义一个自定义损失函数 它在回归模型中接收 3 个输出变量 def custom loss y true y pred y true c K cast y true float32 Shape batch size 3 y pre
  • Python正则表达式替换引号中的文本(引号本身除外)

    例如 我有一个测试字符串 content I opened my mouth Good morning I said cheerfully 我想使用正则表达式删除双语音标记之间的文本 但不删除语音标记本身 所以它会返回 I opened m
  • python os.fork 使用相同的 python 解释器吗?

    据我所知 Python 中的线程使用相同的 Python 解释器实例 我的问题是与创建的流程相同os fork 或者每个进程创建的os fork有自己的翻译吗 每当你 fork 时 整个 Python 进程都会在内存中复制 包括Python
  • 如何在 tkinter 后台运行函数[重复]

    这个问题在这里已经有答案了 我是 GUI 编程新手 我想用 tkinter 编写一个 Python 程序 我想要它做的就是在后台运行一个可以通过 GUI 影响的简单函数 该函数从 0 计数到无穷大 直到按下按钮为止 至少这是我想要它做的 但
  • 在添加数据之前使用 Python gdata 清除工作表中的行

    我有一个 Google 电子表格 我使用 python 脚本和 gdata 库填充值 如果我多次运行脚本 它会将新行附加到工作表中 我希望脚本在填充之前首先清除行中的所有数据 这样每次运行时我都会有一组新的数据脚本 我尝试过使用 Updat
  • 类型错误:无法连接“str”和“int”对象有人可以帮助新手使用他们的代码吗?

    感谢任何帮助 还有任何重大缺陷或您在格式或基本方面看到的任何重大缺陷 请指出 谢谢 day raw input How many days locations raw input Where to days str day location
  • 在 Keras 中使用有状态 LSTM 训练多变量多级数回归问题

    我有时间序列P过程 每个过程的长度各不相同 但都有 5 个变量 维度 我试图预测测试过程的估计寿命 我正在用有状态的方法来解决这个问题LSTM在喀拉斯 但我不确定我的训练过程是否正确 我将每个序列分成长度的批次30 所以每个序列都是这样的形
  • PySpark DataFrame 上分组数据的 Pandas 式转换

    如果我们有一个由一列类别和一列值组成的 Pandas 数据框 我们可以通过执行以下操作来删除每个类别中的平均值 df DemeanedValues df groupby Category Values transform lambda g
  • 如何在 Jupyter Notebook 中选择 conda 环境

    我安装了 Anaconda 5 3 和 Python 3 7 根环境 之后我使用 Python 3 6 创建了一个新环境 py36 我激活了新环境activate py36 conda env list表明环境是活跃的 但是当我启动 Jup
  • 根据标签位置计算 Pandas DataFrame 的索引

    我正在尝试计算标签的索引Pandas https pandas pydata org DataFrame在每一列中 基本上我有以下内容DataFrame d col1 label1 label2 label3 col2 label2 lab
  • 为什么我的 Python 散点图不起作用?

    我使用 pylab 创建了一个非常简单的散点图 pylab scatter engineSize fuelMile pylab show 该程序的其余部分不值得发布 因为正是该行给我带来了问题 当我将 散点 更改为 绘图 时 它会绘制数据图
  • 混合语言源目录布局

    我们正在运行一个使用多种不同语言的大型项目 Java Python PHP SQL 和 Perl 到目前为止 人们一直在自己的私有存储库中工作 但现在我们希望将整个项目合并到一个存储库中 现在的问题是 目录结构应该是什么样的 我们应该为每种
  • Docker Python 脚本找不到文件

    我已经成功构建了一个 Docker 容器 并将应用程序的文件复制到 Dockerfile 中的容器中 但是 我正在尝试执行引用输入文件 在 Docker 构建期间复制到容器中 的 Python 脚本 我似乎无法弄清楚为什么我的脚本告诉我它无

随机推荐