Вопрос:
Я получаю следующую ошибку, когда я обращаюсь к этому URL
Request Method: GET Request URL: 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 %}
EDIT: Я исправил, как предложил frnhr, но появляется следующая ошибка.
TemplateSyntaxError at /accounts/password/reset/ Could not parse the remainder: ‘,’ from ‘uid,’ Request Method: POST Request URL: 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 Лучший ответ:
Django-регистрация не была совместима с Djagno 1.6. Этот патч исправит вашу проблему:
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
Ошибка, которую вы получаете, вероятно, потому, что вы, возможно, не задали путь к шаблону внутри 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’)
надеюсь, это поможет !