将密码重置添加到 Django Admin 会转到错误的 URL?

2024-02-12

我正在关注以下部分添加密码重置功能 https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#adding-a-password-reset-feature到 Django Admin,它会要求您添加以下四个路径:

path('admin/password_reset/', auth_views.PasswordResetView.as_view(), name='admin_password_reset'),
path('admin/password_reset/done/', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'),
path('reset/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
path('reset/done/', auth_views.PasswordResetCompleteView.as_view(), name='password_reset_complete'),

当我添加它们时,“忘记密码或用户名?”链接出现在 Django 管理员登录屏幕上,如果我单击它,它就会起作用,它甚至会发送电子邮件,但在发送电子邮件之后,我最终会遇到此错误。

Page not found (404)
Request Method: GET
Request URL:    http://localhost:8000/accounts/password_reset/done/
Raised by:  django.contrib.auth.views.PasswordResetDoneView

404……呃……是的……那不是地方password_reset/done是。电子邮件中的链接用于:http://localhost:8000/accounts/reset/Mjk/5...9,所以,反对,那不是reset/<uidb64>/<token>/。为什么这些网址位于错误的位置,/accounts/代替/admin/.

我的完整 URL 模式如下所示:

urlpatterns = [
    path('admin/password_reset/', auth_views.PasswordResetView.as_view(), name='admin_password_reset'),
    path('admin/password_reset/done/', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'),
    path('reset/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
    path('reset/done/', auth_views.PasswordResetCompleteView.as_view(), name='password_reset_complete'),
    path('admin/', admin.site.urls),
    path('accounts/', include('django.contrib.auth.urls')),
    path("", views.index, name="homepage")
]

我猜这些重定向会转到/accounts/因为这path('accounts/', include('django.contrib.auth.urls')), 那是对的吗?还有其他方法可以控制它们吗?我主要是想了解发生了什么事。


要发送包含另一个 URL 的密码重置电子邮件,我相信您需要添加单独的电子邮件模板。为此,您需要创建链接到该模板的不同视图。您可以通过子类化 Django 的 auth 视图来使用它们,并且仅定义需要不同的设置。

以下是创建自定义密码重置视图的一般方法,该视图可以与默认视图一起使用:

# urls.py

from .views import CustomPasswordResetView

urlpatterns = [
    ...
    # URL to submit your email address for reset link
    path('admin/password-reset', CustomPasswordResetView.as_view(), name='custom_password_reset'),
    # URL link in email, lands on password reset form
    path('admin/reset/<uidb64>/<token>/', CustomPasswordResetConfirmView.as_view(), name='custom_password_reset_confirm'),
    ...
]

# views.py

from django.contrib.auth.views import PasswordResetView

class CustomPasswordResetView(PasswordResetView):
    email_template_name = 'registration/custom_password_reset_email.html'

默认情况下,Django 使用密码重置电子邮件模板django/contrib/admin/templates/registration/password_reset_email.html。与密码重置相关的默认 HTML 模板也在那里。

要指定您自己的模板,请创建另一个模板registration项目模板中某处的目录(例如users/templates/registration/并在那里创建文件。确保给它一个与 Django 默认模板不同的名称,例如registration/custom_password_reset_email.html,然后将默认电子邮件文本复制并粘贴到其中,并将命名 URL 更改为您想要的 URL,即{% 'custom_password_reset_confirm' %}.

您可以对其他相关视图进行子类化(PasswordChange, PasswordChangeDone等)以根据需要覆盖其他默认设置,例如 HTML 模板、表单类和重定向 URL。所有密码重置视图都在django.contrib.auth.views https://github.com/django/django/blob/master/django/contrib/auth/views.py。 auth 视图作为基于类的视图提供(以及旧的基于标准函数的视图,这些视图从 Django 版本 2.1 开始已被删除)。

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

将密码重置添加到 Django Admin 会转到错误的 URL? 的相关文章

随机推荐

  • 带回调的 JSONP 和 GET - 需要帮助纠正错误

    这是我的 JSONP 文件
  • TypeLoadException 说“没有实现”,但它已实现

    我的测试机器上有一个非常奇怪的错误 错误是 System TypeLoadException Method SetShort in type DummyItem from assembly ActiveViewers does not ha
  • 将 k-state-disabled 类应用于文本输入 - Kendo UI

    这是我的jsfiddledemo http jsfiddle net 94HDF div class k content div class demo section p p div div
  • android mediaRecorder.setAudioSource 失败

    我有 android G1 固件 1 6 我正在尝试使用以下代码从应用程序录制语音 MediaRecorder recorder new MediaRecorder recorder setAudioSource MediaRecorder
  • Friendly_id:slug_candidates 未正确命名 slug

    我的模型中有以下内容 class Dispenser lt ActiveRecord Base extend FriendlyId friendly id slug candidates use slugged def slug candi
  • 该函数会在返回之前等待异步函数完成吗?

    假设我有这些地理编码调用 function myFunction marker1 marker2 var firstAddress null var secondAddress null geocoder geocode latLng ma
  • 将 PowerShell 与 .NET 3.5 运行时/库结合使用

    是否可以运行由 3 5 运行时而不是 2 0 支持的 PowerShell 1 0 或 2 0 CTP 我们正在构建 NET 3 5 解决方案 我仍然想使用 PowerShell 作为计划任务等的脚本引擎 我不需要 LINQ 语法或任何东西
  • 为什么 startActivityForResult 不返回任何内容?

    我在 PreferenceActivity 中有一个 选择图像 Intent i new Intent Intent ACTION PICK android provider MediaStore Images Media EXTERNAL
  • 类型错误:参数 1 必须是 ImagingCore,而不是 ImagingCore

    在 Windows 下我收到此错误 如何修复PIL 这是错误 TypeError 参数 1 必须是 ImagingCore 而不是 ImagingCore usr bin python coding utf 8 from PIL impor
  • 如何在java网络中广播

    这是我第一次用java进行网络编程 我正在寻找一种以某种方式向整个网络中的所有节点发送广播的方法 让他们知道我的存在 我正在尝试制作一款多人网络游戏 我希望客户能够看到所有可用的游戏以选择加入哪一个 我想知道如何从服务器广播以及如何让客户端
  • 带有文件参数的 Jenkins 管道作业

    我正在整理一个 Jenkins 管道作业 该作业将采用文件参数 我可以触发该作业并将其指向一个文件 但是我找不到该文件的最终位置 在普通的自由式作业中 它将位于工作区中 上传的文件去哪儿了 或者文件参数当前不适用于管道 目前管道和文件参数存
  • VS2008:自动生成的文件和 XML 文档

    这与其说是一个问题 不如说是一个烦恼 我的项目包含许多自动生成的文件 使用 mgmtclassgen exe 当我生成 XML 文档时 我的精美注释库受到来自这些 autogen 文件的 xml 文档警告的困扰 有没有办法a 抑制为这些文件
  • CakePHP SQLSTATE[HY000][14]错误

    我正在尝试将当前的 CakePHP 2 x 应用程序升级到 3 x 我修复了命名空间和文件夹结构问题 现在我遇到了数据库问题 在我的测试服务器中 我创建了相同的 MySQL 数据库并授予用户访问权限 然后我就改变了config app ph
  • Python:列表中 Nan 的相等性?

    我只是想弄清楚这些结果背后的逻辑 gt gt gt nan float nan gt gt gt nan nan False I understand that this is because the eq method is define
  • iOS - 如何访问设备的文件库?

    我正在尝试构建一个可以打开设备上存储的任何 pdf 的应用程序 但我真的不知道如何获取这些文件的句柄 我搜索了文档 发现的每个类都假设我已经拥有该文件的句柄 我在这里一定缺少一些东西 有多种应用程序可以访问音频和图片文件 肯定有办法访问 p
  • 如何使用VBA从Excel工作表中的图片获取EXIF信息

    如何使用 VBA 从 Excel 工作表中的形状图片获取 EXIF 信息 如纬度 经度等 是否可以在不从工作表或压缩的 Excel 工作簿中提取或复制图片的情况下获得它 我可以使用以下代码迭代压缩文件夹内容 Public Sub ReadZ
  • 如何在 Blazor Server 中动态添加、删除输入文本框并获取值?

    我有 Blazor 服务器应用程序 如何在单击按钮时动态添加新的输入文本框并将其删除 并在单击提交按钮时获取所有输入文本框的值 以便将它们保存在数据库中 for int i count i gt 1 i div class row div
  • 在 Spring Boot 中使用@Profile

    我有 Spring Boot 应用程序 1 1 5 发布 并通过配置属性启用我的配置文件spring profiles active MyProfile 配置文件被正确激活 我可以通过正在创建的配置文件中的 bean 看到这一点 然后我有一
  • 从键盘获取输入,无需等待输入

    fgets 和 getch 等函数将等待用户输入 然后再继续 我想要的是这个功能 如果用户按 x 变量将开始递减 c 将使变量开始递增 问题是当我尝试获取输入时程序停止 我希望变量在等待用户输入时继续递增或递减并且不 冻结 我正在使用 Vi
  • 将密码重置添加到 Django Admin 会转到错误的 URL?

    我正在关注以下部分添加密码重置功能 https docs djangoproject com en 2 1 ref contrib admin adding a password reset feature到 Django Admin 它会