2

I get the following error when I access this URL 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: []

my password_reset_form.html is

{% 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: I have corrected as suggested by frnhr, but the following error pops up.

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
frnhr
  • 12,354
  • 9
  • 63
  • 90
eagertoLearn
  • 9,772
  • 23
  • 80
  • 122

2 Answers2

2

Django-registration has not been made compatible with Djagno 1.6. This patch will fix your problem: 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'),
)
frnhr
  • 12,354
  • 9
  • 63
  • 90
  • thanks for your answer. I corrected as you suggested, but I get error which I pasted above in edit. kindly help – eagertoLearn Mar 22 '14 at 17:28
  • @eagertoLearn That looks like an error in your template file, and hopefully is unrelated to the question. Search your template files for "uid," string. Any matches? – frnhr Mar 22 '14 at 18:06
  • I have pasted my template file above. i do not see any "uid" string there? – eagertoLearn Mar 22 '14 at 18:29
  • @eagertoLearn And in any other template, maybe in one current template's parents, or something like that. In your place I'd do a grep of the whole project. The "uid," is bound to pop up somewhere. Note the comma. – frnhr Mar 22 '14 at 18:57
  • I also have a question on other post that you gave answer on using custom user models with django-registration. I used your commit in bitbucket. `http://stackoverflow.com/questions/22565964/is-it-possible-to-add-fields-to-exisiting-django-user-models`. please help. – eagertoLearn Mar 22 '14 at 18:58
  • I found the error and fixed it, but I have a few questions that I posted as separate question here: http://stackoverflow.com/questions/22582066/why-does-password-reset-works-with-unregistered-email-in-django – eagertoLearn Mar 22 '14 at 19:00
0

The error that you get is probably because you might not have set the path to template inside urls.py. Because of that, Django tries using the default registration template, which you won't be able to use if you haven't enabled admin. So the two solutions, If you want to use Django's template for resetting password(or for any other feature that @frnhr has mentioned above add this line to your urls.py :

url(r'^admin/', include(admin.site.urls))

Or, if you want to use your own templates, add this parameter to the dictionary in the answer above

{'template_name' : 'registration/password_reset_form.html' }

which would make it look like,

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')

hope that helps !

Sentient07
  • 1,270
  • 1
  • 16
  • 24