访问此网址http://127.0.0.1:8000/accounts/password/reset/
Request Method: GET
Request URL: http://127.0.0.1:8000/accounts/password/reset/
Django Version: 1.6.2
Exception Type: NoReverseMatch
Exception Value:
Reverse for 'password_reset_done' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
我的password_reset_form.html
是
{% extends "registration/base.html" %}
{% load i18n %}
{% block breadcrumbs %}<div class="breadcrumbs"></div>{% endblock %}
{% block title %}{% trans "Password reset" %}{% endblock %}
{% block content %}
<h1>{% trans "Password reset" %}</h1>
<p>{% trans "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one." %}</p>
<form action="" method="post">
{% csrf_token %}
{{ form.email.errors }}
<p><label for="id_email">{% trans 'E-mail address:' %}</label> {{ form.email }} <input type="submit" value="{% trans 'Reset my password' %}" /></p>
</form>
{% endblock %}
编辑: 我已按照frnhr的建议进行了更正,但会弹出以下错误。
TemplateSyntaxError at /accounts/password/reset/
Could not parse the remainder: ',' from 'uid,'
Request Method: POST
Request URL: http://127.0.0.1:8000/accounts/password/reset/
Django Version: 1.6.2
Exception Type: TemplateSyntaxError
Exception Value:
Could not parse the remainder: ',' from 'uid,'
Exception Location: /Users/sridhar/Documents/virtualenvs/django/django/lib/python2.7/site-packages/django/template/base.py in __init__, line 577
Python Executable: /Users/sridhar/Documents/virtualenvs/django/django/bin/python
Python Version: 2.7.5
答案 0 :(得分:2)
Django-registration尚未与Django 1.6兼容。此补丁将解决您的问题:https://bitbucket.org/ubernostrum/django-registration/pull-request/63/django-16-compatibility-fix-auth-views/diff
registration / auth urls.py :
urlpatterns = patterns('',
url(r'^login/$',
auth_views.login,
{'template_name': 'registration/login.html'},
name='auth_login'),
url(r'^logout/$',
auth_views.logout,
{'template_name': 'registration/logout.html'},
name='auth_logout'),
url(r'^password/change/$',
auth_views.password_change,
{'post_change_redirect': reverse_lazy('auth_password_change_done')},
name='auth_password_change'),
url(r'^password/change/done/$',
auth_views.password_change_done,
name='auth_password_change_done'),
url(r'^password/reset/$',
auth_views.password_reset,
{'post_reset_redirect': reverse_lazy('auth_password_reset_done')},
name='auth_password_reset'),
url(r'^password/reset/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>.+)/$',
auth_views.password_reset_confirm,
name='auth_password_reset_confirm'),
url(r'^password/reset/complete/$',
auth_views.password_reset_complete,
{'post_reset_redirect': reverse_lazy('auth_password_reset_complete')},
name='auth_password_reset_complete'),
url(r'^password/reset/done/$',
auth_views.password_reset_done,
name='auth_password_reset_done'),
)
答案 1 :(得分:0)
您得到的错误可能是因为您可能没有在urls.py中设置模板的路径。因此,Django尝试使用默认注册模板,如果您尚未启用管理员,则无法使用该模板。 所以这两个解决方案, 如果您想使用Django的模板重置密码(或者@frnhr上面提到的任何其他功能,请将此行添加到您的urls.py:
url(r'^admin/', include(admin.site.urls))
或者,如果您想使用自己的模板,请在上面的答案
中将此参数添加到字典中{'template_name' : 'registration/password_reset_form.html' }
会使它看起来像,
url(r'^accounts/password/reset/$',
auth_views.password_reset,
{'post_reset_redirect': reverse_lazy('auth_password_reset_done'),
'template_name': 'registration/password_reset_form.html'},
name='auth_password_reset')
希望有所帮助!