[英]Django Password Reset
我對 Django 非常陌生,並試圖為我的 Django 應用程序構建一個身份驗證框架,但當我嘗試構建 password_reset 和 password_reset_done 應用程序時,它失敗了。 我正在使用 Django 內置框架並且沒有進行任何程度的定制
這些是我的網址
from django.conf.urls import url
from django.contrib import admin
from . import views
from django.contrib.auth import views as auth_views
url(r'^change-password/$', views.change_password, name='change_password'),
url(r'^password_reset/$', auth_views.PasswordResetView.as_view(template_name="registration/password_reset.html"), name='password_reset'),
url(r'^password_reset_done/', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'),
url(r'^password_reset_confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
url(r'^password_reset_complete/$',auth_views.PasswordResetCompleteView.as_view(), name="password_reset_complete"),
這是我收到的錯誤消息
NoReverseMatch at /partners/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/partners/password_reset/
Django Version: 2.1.1
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\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django-2.1.1-py3.7.egg\django\urls\resolvers.py in _reverse_with_prefix, line 622
Python Executable: C:\Users\User\AppData\Local\Programs\Python\Python37-32\python.exe
Python Version: 3.7.0
Python Path:
['C:\\Users\\User\\Desktop\\protectandserve',
'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python37-32\\python37.zip',
'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python37-32\\DLLs',
'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python37-32\\lib',
'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python37-32',
'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages',
'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django-2.1.1-py3.7.egg',
'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\pytz-2018.5-py3.7.egg']
Server time: Thu, 4 Oct 2018 07:49:46 +0000
Error during template rendering
In template C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django-2.1.1-py3.7.egg\django\contrib\admin\templates\registration\password_reset_email.html, error at line 6
Reverse for 'password_reset_confirm' not found. 'password_reset_confirm' is not a valid view function or pattern name.
1 {% load i18n %}{% autoescape off %}
2 {% blocktrans %}You're receiving this email because you requested a password reset for your user account at {{ site_name }}.{% endblocktrans %}
3
4 {% trans "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 {% trans "Your username, in case you've forgotten:" %} {{ user.get_username }}
9
10 {% trans "Thanks for using our site!" %}
11
12 {% blocktrans %}The {{ site_name }} team{% endblocktrans %}
13
14 {% endautoescape %}
15
[1]: https://i.stack.imgur.com/eGmJT.png
C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django-2.1.1-py3.7.egg\\django\\contrib\\admin\\templates\\registration\\password_reset_email.html
到partners\\templates\\registration\\
將文件partners\\templates\\registration\\password_reset_email.html
第 6 行編輯為
{{ protocol }}://{{ domain }}{% url 'partners:password_reset_confirm' uidb64=uid token=token %}
更新您的 urls.py 以指向正確的模板:
url( r'^password_reset/$', auth_views.PasswordResetView.as_view( template_name="registration/password_reset.html", email_template_name="registration/password_reset_email.html", success_url=reverse_lazy('partners:password_reset_done'), # might be required ), name='password_reset' ),
正如你提到的 urls.py 是合作伙伴,所以反向調用應該是合作伙伴,在你的模板中更改{% url 'password_reset_confirm' uidb64=uid token=token %}
到{% url 'partners:password_reset_confirm' uidb64=uid token=token %}
。
partners
是應用程序名稱。 這將起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.