- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嘿伙计们,我在我的网络应用程序上执行此功能以重置密码时不断收到此错误不知道为什么会这样这是我的 urls.py
代码:
from django.urls import path
from .views import *
from django.contrib.auth import views as auth_views
完整回溯:
NoReverseMatch at /accounts/password_reset/
Reverse for 'password_reset_confirm' not found. 'password_reset_confirm' is not a valid view function or pattern name.
Request Method: POST
Request URL: http://127.0.0.1:8000/accounts/password_reset/
Django Version: 3.1.6
Exception Type: NoReverseMatch
Exception Value:
Reverse for 'password_reset_confirm' not found. 'password_reset_confirm' is not a valid view function or pattern name.
Exception Location: C:\Users\Dominique\Desktop\STUFF\dev\car_sales\env\lib\site-packages\django\urls\resolvers.py, line 685, in _reverse_with_prefix
Python Executable: C:\Users\Dominique\Desktop\STUFF\dev\car_sales\env\Scripts\python.exe
Python Version: 3.8.5
Python Path:
['C:\\Users\\Dominique\\Desktop\\STUFF\\dev\\car_sales\\src',
'c:\\users\\dominique\\appdata\\local\\programs\\python\\python38-32\\python38.zip',
'c:\\users\\dominique\\appdata\\local\\programs\\python\\python38-32\\DLLs',
'c:\\users\\dominique\\appdata\\local\\programs\\python\\python38-32\\lib',
'c:\\users\\dominique\\appdata\\local\\programs\\python\\python38-32',
'C:\\Users\\Dominique\\Desktop\\STUFF\\dev\\car_sales\\env',
'C:\\Users\\Dominique\\Desktop\\STUFF\\dev\\car_sales\\env\\lib\\site-packages']
Server time: Sun, 28 Feb 2021 06:42:15 +0000
app_name = 'accounts'
urlpatterns = [
path('create-user/', registerview, name='register'),
path('login/', loginview, name='login'),
path('logout/', logoutview, name='logout'),
path('password_reset/', auth_views.PasswordResetView.as_view(template_name='accounts/reset_password.html'), name="password_reset"),
path('password_reset_done/', auth_views.PasswordResetDoneView.as_view(template_name='accounts/reset_password_sent.html'), name="password_reset_done"),
path('password_reset/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(template_name='accounts/reset_password_form.html'), name="password_reset_confirm"),
path('password_reset_complete/', auth_views.PasswordResetCompleteView.as_view(template_name='accounts/reset_password_sucess.html'), name="password_reset_complete"),
]
这是我用来覆盖默认模板的模板之一 reset_password.html
:
<h2>Introduza o email para mudar a sua password</h2>
<form method="POST">
{% csrf_token %}
{{ form }}
<input type="submit" value="Enviar email de atualizacao de password">
</form>
另一个错误:
{% load i18n %}{% autoescape off %}
2 {% blocktranslate %}You're receiving this email because you requested a password reset for your user account at {{ site_name }}.{% endblocktranslate %}
3
4 {% translate "Please go to the following page and choose a new password:" %}
5 {% block reset_link %}
6 {{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %}
7 {% endblock %}
8 {% translate 'Your username, in case you’ve forgotten:' %} {{ user.get_username }}
9
10 {% translate "Thanks for using our site!" %}
11
12 {% blocktranslate %}The {{ site_name }} team{% endblocktranslate %}
13
14 {% endautoescape %}
我知道为什么会发生这种情况,因为我在 url 中发送了 uidb 和 token ....
用于使用 GMAIL 发送电子邮件的我的 SMTP conf:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'my_email'
EMAIL_HOST_PASSWORD = 'my_email_password'
最佳答案
罪魁祸首是 app_name = 'accounts'
。这意味着 PasswordResetView
中定义的 success_url
指向名为 password_reset_done
的 View ,因此无法再找到它的 View 。 PasswordResetConfirmView
也会发生同样的情况。
您可以使用包含命名空间前缀的 View 名称覆盖它:
from django.urls import path, reverse
from .views import *
from django.contrib.auth import views as auth_views
# namespace ↓ (view names need to be prefixed with 'accounts:')
app_name = 'accounts'
urlpatterns = [
path('create-user/', registerview, name='register'),
path('login/', loginview, name='login'),
path('logout/', logoutview, name='logout'),
path(
'password_reset/',
auth_views.PasswordResetView.as_view(
template_name='accounts/reset_password.html'
<b>success_url=reverse_lazy('accounts:password_reset_done')</b>
),
name='password_reset'
),
path('password_reset_done/', auth_views.PasswordResetDoneView.as_view(template_name='accounts/reset_password_sent.html'), name='password_reset_done'),
path(
'password_reset/<uidb64>/<token>/',
auth_views.PasswordResetConfirmView.as_view(
template_name='accounts/reset_password_form.html'
<b>success_url=reverse_lazy('accounts:password_reset_complete')</b>
),
name='password_reset_confirm'
),
path('password_reset_complete/', auth_views.PasswordResetCompleteView.as_view(template_name='accounts/reset_password_sucess.html'), name='password_reset_complete'),
]
在模板中,你还应该在它前面加上命名空间,所以:
{% url '<b>account:</b>password_reset_confirm' uidb64=uid token=token %}
如果这是内置模板,您可以创建自己的模板,例如通过复制粘贴 original template [GitHub]然后保存一个新模板并指定该模板的路径:
from django.urls import path, reverse
from .views import *
from django.contrib.auth import views as auth_views
# namespace ↓ (view names need to be prefixed with 'accounts:')
app_name = 'accounts'
urlpatterns = [
path('create-user/', registerview, name='register'),
path('login/', loginview, name='login'),
path('logout/', logoutview, name='logout'),
path(
'password_reset/',
auth_views.PasswordResetView.as_view(
template_name='accounts/reset_password.html',
success_url=reverse_lazy('accounts:password_reset_done'),
<b>email_template_name='<i>path_to/template.html</i>'</b>
),
name='password_reset'
),
path('password_reset_done/', auth_views.PasswordResetDoneView.as_view(template_name='accounts/reset_password_sent.html'), name='password_reset_done'),
path(
'password_reset/<uidb64>/<token>/',
auth_views.PasswordResetConfirmView.as_view(
template_name='accounts/reset_password_form.html'
success_url=reverse_lazy('accounts:password_reset_complete')
),
name='password_reset_confirm'
),
path('password_reset_complete/', auth_views.PasswordResetCompleteView.as_view(template_name='accounts/reset_password_sucess.html'), name='password_reset_complete'),
]
关于django - 继续收到 Reverse for 'password_reset_confirm' not found 错误。 'password_reset_confirm' 不是有效的 View 函数或模式名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66406530/
如何在不使用Array.Reverse()方法的情况下反转数组(在C#中)?。例如,。应该会导致。这是我的面试任务。
我有一个内容,我希望它们以倒序排列和换行倒序排列,但顺序相反。这是代码: .a { height: 200px; width: 520px; padding: 5px 5px 5px 10
很多时候,我看到在列表头部运行的函数,例如: trimHead ('\n':xs) = xs trimHead xs = xs 然后我看到了定义: trimTail = reverse
如果 Reverse :: [k] -> [k]是一个类型族,那么 Haskell 无法判断 (Reverse (Reverse xs)) ~ xs .有没有办法让类型系统知道这一点而无需任何运行时成
我有一个单维项目数组,其声明和初始化为: string[] SubDirectorylist = Directory.GetDirectories(TargetDirectory); 我想反转成员并发
这是代码 >>> a=[1,3,2] >>> a [1, 3, 2] >>> a= 3,1,2 >>> a (3, 1, 2) >>> sorted(a) [1, 2, 3] >>> sorted(a
我对以下问题感兴趣:Collections.reverse() 与 Lists.reverse() 哪个更快? 最佳答案 他们做不同的事情。 Collections.reverse 采用可变列表并反转
我对以下问题感兴趣:Collections.reverse() 与 Lists.reverse() 哪个更快? 最佳答案 他们做不同的事情。 Collections.reverse 采用可变列表并反转
我今天在我的 Django 控制台中尝试了这个,我得到了两个不同的结果。我认为 list.reverse() 会反转列表(即第一个对象变成最后一个,依此类推)[1]。然而,情况似乎并非如此。 >>>
这个小小的 jQuery 插件: jQuery.fn.reverse = [].reverse; 它是如何工作的?对象绑定(bind)在哪里 - 反转函数的数组原型(prototype)?我真的不明白
大概都是 mylist.reverse()和 list.reverse(mylist)最终执行 reverse_slice 在 listobject.c通过 list_reverse_impl 或 P
您好,我在添加 django-reversion 和 django-reversion-compare 模块时遇到了一些问题。 我创建了新项目,我想使用 django-reversion 跟踪 use
我有以下观点: def default_new (request): if request.method == "POST": post = EquipmentForm(req
我对 List.Reverse() 有疑问和 Reverse(this IEnumerable source) .查看代码: // Part 1 List list = new List {
我需要首先对字典进行排序,值 reverse=True,对于重复值,按键排序 reverse=False 到目前为止,我有这个 dict = [('B', 3), ('A', 2), ('A', 1)
我有一个字典,其中包含要排序的字符串键和 int 值。我希望它首先按递减值编号排序,然后按字母顺序排序。 例如,如果您有一个包含以下内容的字典: my_dict = {'zebra':1, 'the'
我是编程新手。我正在通过第 9 channel 的 Bob Tabors 视频学习 c#。 你能解释一下为什么我们不能做这样的事情吗: string mijnVoornaam = "Remolino"
这个问题在这里已经有了答案: Why there is two completely different version of Reverse for List and IEnumerable? (
有什么区别 mylist = reversed(sorted(mylist)) 对 mylist = sorted(mylist, reverse=True) 为什么要使用一个而不是另一个? 如何在多
我的问题涉及将新方法添加到现有String 构造函数 的应用程序。在 Stoyan Stefanov 的 Object Oriented Program for Javascript 中,有一个使用
我是一名优秀的程序员,十分优秀!