python - 错误'找不到'password_reset_confirm'的反向。' 在 Django
问题描述
所以,我试图建立一个博客网站,用户可以通过向他的电子邮件地址发送电子邮件来重置他的密码,我主要使用 Django Build In 功能。我试图创建用户可以在其中重置密码的确认 URL 路径,但即使我包含密码重置确认的路径,也会出现错误。
错误:未找到“password_reset_confirm”的反向。'password_reset_confirm' 不是有效的视图函数或模式名称。
我的 urls.py 用于密码重置
from django.conf.urls import url
from django.contrib.auth import views as auth_view
from django.urls import path
app_name = "blog"
urlpatterns = [
# for /blog/password-reset/
path('password-reset/', auth_view.PasswordResetView.as_view(template_name='blog/password_reset.html'), name="password_reset"),
# for /blog/password-reset/done/
path('password-reset/done/', auth_view.PasswordResetDoneView.as_view(template_name='blog/password_reset_done.html'), name="password_reset_done"),
# for /blog/password-reset/confirm/<uidb64>/token>
path('password-reset-confirm/<uidb64>/<token>', auth_view.PasswordResetConfirmView.as_view(template_name='blog/password_reset_confirm.html'), name="password_reset_confirm"),
]
注意:我没有包括所有的网址,因为它有点大
我的密码-reset.html
{% extends 'blog/base_for_log.html' %}
{% load crispy_forms_tags %}
{% block title %}Blog{% endblock %}
{% block body %}
<div class = "container">
<div class="content-section py-5">
<form method="POST">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4">
Password Reset
</legend>
{{ form|crispy }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type = "submit">Request Reset Password</button>
</div>
</div>
</form>
</div>
</div>
{% endblock %}
我的博客/password_reset_confirm.html
{% extends "blog/base.html" %}
{% load crispy_forms_tags %}
{% block body %}
<div class="content-section">
<form method="POST">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4">Reset Password</legend>
{{ form|crispy }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Reset Password</button>
</div>
</form>
</div>
{% endblock body %}
我希望输出是 ConnectionResufedError,但我得到了 NoReverseMatch 错误。
提前致谢。
解决方案
问题是您path('password-reset-confirm/<uidb64>/<token>', ...)
需要两个 url 路径参数(uidb64 和 token)。
在您的模板中,您只 href="{% url 'blog:password_reset_confirm' %}"
没有提供任何参数,因此函数无法解析为有效的 url。您需要提供如下值:
href="{% url 'blog:password_reset_confirm' uidb64='uidb64' token='token' %}"
推荐阅读
- json - 我的 Json/javascript 轮播没有显示,甚至不会显示。与卡片组相同
- azure-active-directory - Azure 通用凭据:在 get_token_with_client_credentials 中检索访问令牌时连接到 Blob 存储时出错
- javascript - 如何使用 DOM (*object*.style) 更改 iframe 的灰度?
- azure - Azure YAML 构建;在解决方案中只构建单个项目?
- freertos - FreeRTOS 中等待任务自行删除的正确方法是什么?
- json - python写入json文件而不覆盖
- sql - 左连接临时表时,将表达式转换为数据类型 int 时出现算术溢出错误
- jenkins - Flyway 和 Jenkins 集成使用来自 github 路径的位置
- python - 为什么我的自动编码器的潜在空间输出不是我预期的形状?
- performancecounter - 使用自定义性能计数器所需的权限