NoReverseMatch at / user_details / reset-password

时间:2015-10-29 22:27:01

标签: django

我知道这很好,但不知何故其他答案似乎都没有解决我的问题。

我在使用ReverseMatch时遇到错误,这是相关的urls.py部分:

bash 'UPDATE /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}bdb.ldif #3' do
  code <<-EOH
     sed -i.bak -e '$aolcRootPW: {SSHA}Z/+CHVP/Vx3bA2m6l0aI6uvIMhJUitpT' /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}bdb.ldif
  EOH
end

我认为该名称已经得到了充分的定义?

问题出在模板/usr/lib/python2.7/dist-packages/django/contrib/admin/templates/registration/password_reset_email.html,第6行出错:

# for password reset
    url(r'^reset-password$','django.contrib.auth.views.password_reset', {'post_reset_redirect' : 'user_details/reset_password.html', 'template_name': 'user_details/reset_password.html'}, name="password_reset"),
    url(r'^reset/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm', {'post_reset_redirect' : 'user_details/reset_password.html'}, name="password_reset_confirm"),

其中{%url ...}以红色突出显示。

为什么呢? 我假设Django会使用该视图的默认模板吗?

谢谢!

克里斯

2 个答案:

答案 0 :(得分:1)

是的,我不得不决定覆盖Django默认电子邮件,因为反向URL查找并不想表现得正常。

所以我创建了原始Django电子邮件文件的副本(/usr/lib/python2.7/dist-packages/django/contrib/admin/templates/registration/password_reset_email.html):

{% load i18n %}{% autoescape off %}
{% blocktrans %}You're receiving this email because you requested a password reset for your user account at {{ site_name }}.{% endblocktrans %}

{% trans "Please go to the following page and choose a new password:" %}
{% block reset_link %}
{{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %}
{% endblock %}
{% trans "Your username, in case you've forgotten:" %} {{ user.get_username }}

{% trans "Thanks for using our site!" %}

{% blocktrans %}The {{ site_name }} team{% endblocktrans %}

{% endautoescape %}

并用以下内容替换第6行:

{{ protocol }}://{{ domain }}/user_details/reset/{{uid}}/{{token}}

匹配我的urls.py。

这确实现在有效......

答案 1 :(得分:0)

您已经定义了一个接受“uidb36”参数的URL,但反向调用正在传递“uidb64”。