2014-01-22 4 views
1

Я делаю проект в django. В моем проекте мне нужно было сбросить пароль по электронной почте. Для этого я использовал django.contrib.auth.urls. Мой тест был успешным, когда он проходил через шаблон djangos. Позднее я попробовал его на своем шаблоне, потому что я создал папку регистрации и создал пять страниц html, включая шаблон электронной почты. Также я включил url(r'^web/',include('django.contrib.auth.urls')), в мой главный url. Но когда я запускаю сервер, я могу передать ссылку на электронную почту. И откройте представление в моем браузере. В том, что я сменил свой пароль, который вводится дважды, и когда я ничего не сообщал, в чем проблема, пожалуйста, помогите мне?django password reset password_reset_confirm

мой password_reset_confirm.html является

{% extends 'base.html' %} 
{% load i18n %} 

{% block content %} 
    {% if validlink %} 
     <p>Please enter your new password twice.<br /> 
      So we can verify you typed it in correctly.</p> 
     <form action="" method="post"> 
      <div style="display:none"> 
       <input type="hidden" value="{{ csrf_token }}"name="csrfmiddlewaretoken"> 
      </div> 
      <table> 
       <tr> 
        <td>{{ form.new_password1.errors }} 
         <label for="id_new_password1">New password:</label></td> 
        <td>{{ form.new_password1 }}</td> 
       </tr> 
       <tr> 
        <td>{{ form.new_password2.errors }} 
         <label for="id_new_password2">Confirm password:</label></td> 
        <td>{{ form.new_password2 }}</td> 
       </tr> 
       <tr> 
        <td></td> 
        <td><input type="submit" value="Change my password" /></td> 
       </tr> 
      </table> 
     </form> 
    {% else %} 
     <h1>Password reset unsuccessful</h1> 
     <p>The password reset link was invalid, <br /> 
     possibly because it has already been used. <br /> 
     Please request a new password reset.</p> 
    {% endif %} 
{% endblock %} 

ответ

2

Я реализовал процедуру сброса пароля с несколько иным образом, ниже было протестировано и работает:

в проекте urls.py:

urlpatterns = patterns('', 
    url(r'^user/', include('users.urls')), 
) 

в urls.py:

... 
url(r'^password-reset/$', 'django.contrib.auth.views.password_reset', kwargs={'template_name': 'password_reset_form.html'}, name='password-reset'), 
url(r'^password_reset/done/$', 'django.contrib.auth.views.password_reset_done', kwargs={'template_name': 'password_reset_done.html'}, name='password_reset_done'), 
url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$','django.contrib.auth.views.password_reset_confirm',kwargs={'template_name': 'password_reset_confirm.html'},name='password_reset_confirm'), 
url(r'^reset/done/$', 'django.contrib.auth.views.password_reset_complete', kwargs={'template_name': 'password_reset_complete.html'}, name='password_reset_complete'), 
... 

Для моего удобства я создал файлы шаблонов в корневом каталоге приложения, указанные выше URL-адреса находятся под/пользователем моего проекта.

users/templates$ ls password* 
password_reset_complete.html password_reset_done.html 
password_reset_confirm.html password_reset_form.html 

Я проверил и его работы, формы такие же, как Джанго при условии, один только я продлить Frontpage базовый шаблон, так как я не хочу никаких шаблонов Django администратора, появляющиеся на передних конечных пользователей, например, :

{% extends "base.html" %} 
{% load i18n %} 

{% block title %}{% trans 'Password reset' %}{% endblock %} 

{% block maincontent %} 
<div class="row"> 
    <div class="col-lg-6 col-lg-offset-3"> 
     {% if validlink %} 
     <h1>{% trans 'Enter new password' %}</h1> 
     <p>{% trans "Please enter your new password twice so we can verify you typed it in correctly." %}</p> 

     <form action="" method="post">{% csrf_token %} 
      {{ form.new_password1.errors }} 
      <div class="form-group"> 
       <label for="id_new_password1">{% trans 'New password:' %}</label> 
       <input class="form-control" type="password" id="id_new_password1" name="new_password1" value=""> 
      </p> 
      {{ form.new_password2.errors }} 
      <div class="form-group"> 
       <label for="id_new_password2">{% trans 'Confirm password:' %}</label> 
       <input class="form-control" type="password" id="id_new_password2" name="new_password2" value=""> 
      </div> 
      <div class="row"> 
       <div class="col-lg-l2"> 
        <input type="submit" class="btn btn-default" value="{% trans 'Change my password' %}" /> 
       </div> 
      </div> 
     </form> 

     {% else %} 

     <h1>{% trans 'Password reset unsuccessful' %}</h1> 

     <p>{% trans "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." %}</p> 

     {% endif %} 
    </div> 
</div> 
{% endblock maincontent %} 
+0

когда я проследить Lib пакет я понял неисправность происходя, потому что POST форма приобретай в django.contrib.auth.view, почему это происходит мне помочь. –

+0

Я пробовал ваш код, но проблема с GET и POST.Post форма перенаправляется как get.So я не могу сохранить данные в базе данных –

+0

Это не может быть, как метод формы POST, вы делаете что-то еще неправильно здесь. – petkostas