2013-11-10 2 views
1

Я использую django allauth для моего проекта django для всех моих функций, связанных с проверкой подлинности, , так что теперь я хочу реализовать функциональность password change, поэтому просто скопировал django allauth шаблоны к моим templates/allauth/account/password_change.html и настроено с моей нестандартной конструкцией и имеет вид что-то вроде нижеКак добавить сообщение об успешном завершении после того, как django allauth сменил пароль, вернул ответ

<form accept-charset="UTF-8" class="" action="{% url 'account_change_password' %}" method="post"> 
    {% csrf_token %} 
    <div class="alert alert-success password_changed"> 
      You have Successfully changed your Password! 
    </div> 
    {{form.as_p}} 
    <div class="span12 pagination-centered marg_lftnone"> 
      <input id="save_new_password" name="action" type="submit" class="btn btn-large big_btn marg_tp38 marg_btm38" value="Save Password"> 
    </div> 
</form> 

Так что с выше шаблоном пароль меняется функциональность работает нормально и перенаправление на текущую страницу, но то, что я хочу, когда перенаправлена на текущую страницу, я хочу показать message div, как указано выше, сообщая, что you have changed password successfully.

Итак, как отображать и выводить сообщение об ошибке после успешного смены пароля и перенаправлять его на ту же страницу?

ответ

1

Allauth излучает сигнал password_changed, поэтому вам нужно подключить приемник. В вашем models.py добавить следующее:

from allauth.account.signals import password_changed 
from django.dispatch import receiver 
from django.contrib import messages 

@receiver(password_changed) 
def password_change_callback(sender, request, user, **kwargs): 
    messages.success(request, 'You have Successfully changed your Password!.') 

Затем используйте ваше сообщение внутри шаблона как описано here.

+0

большого спасибо за ответ, но его отображение мне ошибки, что 'AssertionError: приемники сигналов должны принимать аргументы ключевого слова (** kwargs) .'. поэтому функция должна получать ** kwargs, например 'def password_change_callback (отправитель, запрос, пользователь, ** kwargs):' –

+1

и более над сообщениями отображаются ошибки div 'три раза' и не знаете y? –

+0

добавить ** kwargs, это действительно необходимо. сообщения хранятся [в сеансе по умолчанию] (https://docs.djangoproject.com/en/1.3/ref/contrib/messages/#enabling-messages), поэтому вы в основном изменили pwd три раза, и эти сообщения отображаются сейчас , – alko

1

В django-allauth сообщения хранятся в виде файлов txt в django-allauth/allauth/templates/account/messages/.

Вы можете скопировать файл password_changed.txt в свой templates/account/messages/ и настроить следующий код:

{% load i18n %} 
{% blocktrans %}Password successfully changed.{% endblocktrans %} 

Link to the password_changed.txt file on github

Смежные вопросы