NoReverseMatch для password_Reset_confirm

У меня проблема с получением пароля password_Reset_confirm.

URL:

(r'^password_reset/

password_reset_email.html, который включает это:

{% load url from future %}
Someone asked for password reset for email {{ email }}. Follow the link below:
{{ protocol}}://{{ domain }}{% url 'password_reset_confirm' uidb36=uid token=token %}

Но затем после отправки моего электронного письма для сброса пароля, я получаю это сообщение об ошибке:

NoReverseMatch at /password_reset/ Reverse for 'password_reset_confirm' with arguments '()' and keyword arguments '{'uidb36': '1', 'token': '38d-b5ec0b2a2321f522f954'}' not found.

Я подумал, так как это использует сборку, мне не придется заботиться ни о чем другом?

Спасибо за совет,

Update:

После использования полного пути, похоже, работает. Однако он отправляет два электронных письма: и у каждого есть своя ссылка. Это почему? И где мне установить {{domain}}? Спасибо

Follow the link below:
http://example.com/password_reset_confirm/1-38d-b5ec0b2a2321f522f954/

Follow the link below:
http://example.com/password_reset_confirm/2-38d-18482e1f129c84b9c2bc/

Update 2

Я понял. На всякий случай, если у кого-то еще есть эта проблема. Вам необходимо установить ваше доменное имя в качестве сайта для вашего приложения:

В консоли администратора или django:

>>> my_site = Site.objects.get(pk=1)
>>> my_site.domain = 'somedomain.com'
>>> my_site.name = 'Some Domain'
>>> my_site.save()

Другая проблема, почему вы можете получить два электронных письма при его сбросе, заключается в том, что вы можете иметь несколько имен пользователей, связанных с одним и тем же адресом электронной почты. Это довольно глупо. Это следующая вещь, которую я должен решить.

, 'django.contrib.auth.views.password_reset'), (r'^password_reset_done/

password_reset_email.html, который включает это:

{% load url from future %}
Someone asked for password reset for email {{ email }}. Follow the link below:
{{ protocol}}://{{ domain }}{% url 'password_reset_confirm' uidb36=uid token=token %}

Но затем после отправки моего электронного письма для сброса пароля, я получаю это сообщение об ошибке:

NoReverseMatch at /password_reset/ Reverse for 'password_reset_confirm' with arguments '()' and keyword arguments '{'uidb36': '1', 'token': '38d-b5ec0b2a2321f522f954'}' not found.

Я подумал, так как это использует сборку, мне не придется заботиться ни о чем другом?

Спасибо за совет,

Update:

После использования полного пути, похоже, работает. Однако он отправляет два электронных письма: и у каждого есть своя ссылка. Это почему? И где мне установить {{domain}}? Спасибо

Follow the link below:
http://example.com/password_reset_confirm/1-38d-b5ec0b2a2321f522f954/

Follow the link below:
http://example.com/password_reset_confirm/2-38d-18482e1f129c84b9c2bc/

Update 2

Я понял. На всякий случай, если у кого-то еще есть эта проблема. Вам необходимо установить ваше доменное имя в качестве сайта для вашего приложения:

В консоли администратора или django:

>>> my_site = Site.objects.get(pk=1)
>>> my_site.domain = 'somedomain.com'
>>> my_site.name = 'Some Domain'
>>> my_site.save()

Другая проблема, почему вы можете получить два электронных письма при его сбросе, заключается в том, что вы можете иметь несколько имен пользователей, связанных с одним и тем же адресом электронной почты. Это довольно глупо. Это следующая вещь, которую я должен решить.

, 'django.contrib.auth.views.password_reset_done'), (r'^password_reset_confirm/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/

password_reset_email.html, который включает это:

{% load url from future %}
Someone asked for password reset for email {{ email }}. Follow the link below:
{{ protocol}}://{{ domain }}{% url 'password_reset_confirm' uidb36=uid token=token %}

Но затем после отправки моего электронного письма для сброса пароля, я получаю это сообщение об ошибке:

NoReverseMatch at /password_reset/ Reverse for 'password_reset_confirm' with arguments '()' and keyword arguments '{'uidb36': '1', 'token': '38d-b5ec0b2a2321f522f954'}' not found.

Я подумал, так как это использует сборку, мне не придется заботиться ни о чем другом?

Спасибо за совет,

Update:

После использования полного пути, похоже, работает. Однако он отправляет два электронных письма: и у каждого есть своя ссылка. Это почему? И где мне установить {{domain}}? Спасибо

Follow the link below:
http://example.com/password_reset_confirm/1-38d-b5ec0b2a2321f522f954/

Follow the link below:
http://example.com/password_reset_confirm/2-38d-18482e1f129c84b9c2bc/

Update 2

Я понял. На всякий случай, если у кого-то еще есть эта проблема. Вам необходимо установить ваше доменное имя в качестве сайта для вашего приложения:

В консоли администратора или django:

>>> my_site = Site.objects.get(pk=1)
>>> my_site.domain = 'somedomain.com'
>>> my_site.name = 'Some Domain'
>>> my_site.save()

Другая проблема, почему вы можете получить два электронных письма при его сбросе, заключается в том, что вы можете иметь несколько имен пользователей, связанных с одним и тем же адресом электронной почты. Это довольно глупо. Это следующая вещь, которую я должен решить.

, 'django.contrib.auth.views.password_reset_confirm'),

password_reset_email.html, который включает это:

{% load url from future %}
Someone asked for password reset for email {{ email }}. Follow the link below:
{{ protocol}}://{{ domain }}{% url 'password_reset_confirm' uidb36=uid token=token %}

Но затем после отправки моего электронного письма для сброса пароля, я получаю это сообщение об ошибке:

NoReverseMatch at /password_reset/ Reverse for 'password_reset_confirm' with arguments '()' and keyword arguments '{'uidb36': '1', 'token': '38d-b5ec0b2a2321f522f954'}' not found.

Я подумал, так как это использует сборку, мне не придется заботиться ни о чем другом?

Спасибо за совет,

Update:

После использования полного пути, похоже, работает. Однако он отправляет два электронных письма: и у каждого есть своя ссылка. Это почему? И где мне установить {{domain}}? Спасибо

Follow the link below:
http://example.com/password_reset_confirm/1-38d-b5ec0b2a2321f522f954/

Follow the link below:
http://example.com/password_reset_confirm/2-38d-18482e1f129c84b9c2bc/

Update 2

Я понял. На всякий случай, если у кого-то еще есть эта проблема. Вам необходимо установить ваше доменное имя в качестве сайта для вашего приложения:

В консоли администратора или django:

>>> my_site = Site.objects.get(pk=1)
>>> my_site.domain = 'somedomain.com'
>>> my_site.name = 'Some Domain'
>>> my_site.save()

Другая проблема, почему вы можете получить два электронных письма при его сбросе, заключается в том, что вы можете иметь несколько имен пользователей, связанных с одним и тем же адресом электронной почты. Это довольно глупо. Это следующая вещь, которую я должен решить.

 Houman22 июн. 2012 г., 15:24
Цезарь, я исправил две другие проблемы и обновил вопрос. Если вы хотите оставить свой комментарий в качестве ответа, я отмечу его как ответ. Спасибо
 César22 июн. 2012 г., 19:13
Хорошо, я сделаю это
 Houman21 июн. 2012 г., 20:33
Да, это сработало. Странно, потому что я скопировал это из документации Django. Теперь осталось две проблемы, смотрите обновленный вопрос. Спасибо
 César21 июн. 2012 г., 19:55
Я думаю, вы должны указать имя представления вместо имени URL. Что-то вроде{% url 'django.contrib.auth.views.password_reset_confirm' ... %}

Ответы на вопрос(5)

Убедитесь, что это есть в вашем urls.py:

urlpatterns = [
    url('^', include('django.contrib.auth.urls'))
]

Увидетьhttps://docs.djangoproject.com/en/1.8/topics/auth/default/#django.contrib.auth.views.password_reset Раздел: Представления аутентификации

Просто скопируйте этот URL в ваш основной файл urls.py, чтобы он распознал имя URL

url(r'^reset/(?P[0-9A-Za-z_-]+)/(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', 'django.contrib.auth.views.password_reset_confirm', name='password_reset_confirm'),

Решение Вопроса

При использованииurl Шаблон тега, вам нужно указать вид, а не сам URL. Поскольку вы используете'django.contrib.auth.views.password_reset_confirm' в вашем URLConf вы должны использовать это так:

{% url 'django.contrib.auth.views.password_reset_confirm' ... %}

Подробнее оurl тег шаблона на DjangoВстроенные шаблоны тегов и фильтров документация.

 19 апр. 2018 г., 13:31
Поддержка аргументов строкового представления для url () устарела и была удалена в Django 1.10. Поэтому вместо этого следует использовать ответ @ Shih-WenSu

Это может быть встроенное представление, но вам все еще нужен URL для него. Вы должны определить один в urls.py и связать его сpassword_reset_confirm Посмотреть.

 Houman21 июн. 2012 г., 20:34
У меня уже есть определенный URL, см. Выше .. (Если я не понял вас правильно) Решение от Cesar работает на самом деле. Но сейчас я еще не совсем там. Только что обновил вопрос. Спасибо

Чтобы передать URL кurl шаблон тега, вы можете указатьname на URL вurls.py

url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/

и тогда вы можете использовать тег с именем URL

{% url 'password_reset_confirm' uidb64=uid token=token %}
, views.password_reset_confirm, name='password_reset_confirm'),

и тогда вы можете использовать тег с именем URL

{% url 'password_reset_confirm' uidb64=uid token=token %}

Ваш ответ на вопрос