Django 1.0, используется сброс пароля по умолчанию - PullRequest
6 голосов
/ 03 июня 2009

Я пытаюсь использовать настройку сброса пароля, которая идет с Django, но документация не очень хороша для этого. Я использую Django 1.0 и получаю эту ошибку:

Caught an exception while rendering: Reverse for 'mysite.django.contrib.auth.views.password_reset_confirm' with arguments '()' and keyword arguments ...

в моем urlconf у меня есть что-то вроде этого:

#django.contrib.auth.views
urlpatterns = patterns('django.contrib.auth.views',    
    (r'^password_reset/$', 'password_reset', {'template_name': 'accounts/registration/password_reset_form.html', 'email_template_name':'accounts/registration/password_reset_email.html', 'post_reset_redirect':'accounts/login/'}),
    (r'^password_reset/done/$', 'password_reset_done', {'template_name': 'accounts/registration/password_reset_done.html'}),
    (r'^reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 'password_reset_confirm', {'template_name': 'accounts/registration/password_reset_confirm.html', 'post_reset_redirect':'accounts/login/', 'post_reset_redirect':'accounts/reset/done/'}),
    (r'^reset/done/$', 'password_reset_complete', {'template_name': 'accounts/registration/password_reset_complete.html'}),
)

Проблема, кажется, в этом файле:

password_reset_email.html 

в строке 7

{% url django.contrib.auth.views.password_reset_confirm uidb36=uid, token=token %}

Я в растерянности относительно того, что происходит, поэтому любая помощь будет оценена.

Спасибо

Ответы [ 4 ]

3 голосов
/ 03 июня 2009

Редактировать : я использовал ваш пример, и мне пришлось изменить его, чтобы не использовать параметры ключевого слова.

{% url django.contrib.auth.views.password_reset_confirm uid, token %}

Именованные параметры работают, пока определены и uid, и токен. Если либо не определено, либо пусто, я получаю ту же ошибку, что и вы:

{% url django.contrib.auth.views.password_reset_confirm uidb36=uid, token=token %}
2 голосов
/ 10 июля 2011

Я боролся с этим более часа, пробуя все на этой и всех других страницах в Интернете. Наконец, чтобы решить проблему в моем случае, мне пришлось удалить

{% load url from future %}

из верхней части моего шаблона password_reset_email.html.

Также обратите внимание, что "uidb36 = uid" в скрипте URL. Вот мой полный шаблон password_reset_email.html, надеюсь, он сэкономит кому-то время:

{% autoescape off %}
    You're receiving this e-mail because you requested a password reset for your user account at {{ site_name }}.


Please go to the following page and choose a new password:
{% block reset_link %}
{{ protocol }}://{{ domain }}{% url django.contrib.auth.views.password_reset_confirm uidb36=uid token=token %}
{% endblock %}

Your username, in case you've forgotten:" %} {{ user.username }}

Thanks for using our site!

The {{ site_name }} team

{% endautoescape %}
2 голосов
/ 03 июня 2009

Просто хотел опубликовать решение, которое я придумал. Проблема была в этой строке:

{% url django.contrib.auth.views.password_reset_confirm uidb36=uid, token=token %}

Я на самом деле не на 100% почему, поэтому я просто запрограммировал URL-адрес следующим образом:

http://mysite.com/accounts/reset/{{uid}}-{{token}}/
0 голосов
/ 03 июня 2009

Это проблема, которую я сам решил не 10 минут назад. Решение состоит в том, чтобы добавить значение post_change_redirect в словарь аргументов, передаваемых в представление password_reset.

Так вот как теперь выглядит моя:

(r'^/password/$', password_change, {'template_name': 'testing/password.html', 'post_change_redirect': '/account/'})

Я надеюсь, что это сделает за вас! Я согласен с тем, что документация для этой конкретной функции несколько отсутствует, но это решило точно такую ​​же проблему для моего проекта.

Редактировать: Я действительно должен был прокрутить - вы уже включили это. Извиняюсь за это, но я надеюсь, что вы разберетесь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...