1

我在我的 django 项目中使用 django allauth 来实现所有与身份验证相关的功能,所以现在我想实现password change功能,所以只需将 django allauth 模板复制到我的模板中,templates/allauth/account/password_change.html并使用我的自定义设计进行自定义,并具有如下所示的形式

<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

那么密码修改成功并重定向到同一页面后如何显示和错误信息呢?

4

3 回答 3

2

在 django-allauth 中,消息以 txt 文件的形式存储在django-allauth/allauth/templates/account/messages/.

您可以将password_changed.txt文件复制到您的templates/account/messages/并自定义以下代码:

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

链接到 github 上的 password_changed.txt 文件

于 2017-02-15T16:42:18.537 回答
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!.')

然后在模板中使用您的消息,如此处所述

于 2013-11-10T17:17:11.063 回答
0

一个不错的简单方法是将这段代码添加到模板中password_change.html

<h1>{% translate "Change Password" %}</h1>   
{% if messages %}
  {% for message in messages %}
    {% if message.tags == 'success' %}          
      {% translate 'Password successfully changed.' %}
    {% endif %}
  {% endfor %}
{% endif %}   
<form method="POST" ...>
于 2021-10-14T20:49:22.713 回答