从表单成功重定向后,如何检测HTML页面中的更改



views.py

class ChangePasswordView(PasswordChangeView):
form_class = ChangePasswordForm
success_url = reverse_lazy("login")

login.html

{% if XXXXXX %}
<p style="color:green;">Password changed successfully! Please login.</p>
{% endif %}

基本上,如果密码被更改,我希望以下消息出现在我的登录html页面上。有没有一种方法可以检测表单是否成功(通过向HTML传递一些参数),或者用户是否从某个URL重定向到了当前的HTML页面?

使用Django的消息框架可能更容易,而不是编写特定的消息。

您可以使用MessageSuccessMixin向会话添加消息,因此:

from django.contrib.messages.views importSuccessMessageMixin

class ChangePasswordView(SuccessMessageMixin, PasswordChangeView):
form_class = ChangePasswordForm
success_url = reverse_lazy('login')
success_message= 'Password changed successfully! Please login.'

通常,在所有页面上,您都会编写逻辑来向用户报告消息,如文档中所述:

{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}

如果有消息,该页面会将这些消息传递给用户,并从会话中删除这些消息,以防止再次显示这些消息。因此,这是一种添加消息的方式,这些消息将(稍后)在用户访问下一个页面时报告给用户。

最新更新