当用户请求重置密码时,他将被重定向到/password/reset/done/
,告知用户“我们已向您发送了一封电子邮件......”,但如果您直接转到该页面,您会收到相同的信息,这有点令人困惑,因为没有电子邮件发送给任何人。
是否有可以在password_reset_done.html
{{ messages }}
模板中使用的变量,以便在if
条件下,其他内容可以显示给直接访问者?如果没有,有办法吗?
修改
请不要急于将此标记为How to use the built-in 'password_reset' view in Django?的重复问题。
我知道如何显示该页面/password/reset/done/
,这基本上是专门用于告诉用户我们已向您发送电子邮件以便您可以关注该链接的阶段重置密码...",而您提到的问题是关于如何在密码重置成功时正确重定向用户。
我正在寻找的是一种方法,可以将其重定向到另一个页面,或者在用户试图直接浏览该页面时显示一些不同的内容(人们有时也会这样做),这应该是以后查看的他成功提交了密码重置请求。我需要一些钩子来使它工作。
答案 0 :(得分:1)
在检查/account/views.py
中的代码后,我意识到需要在之前的/password/reset/
页面中添加一条消息,以便可以在下一页/password/reset/done/
中使用该消息。
以下是一个例子:
在form_valid
的{{1}}方法中添加:
class PasswordResetView
现在,我可以在get_adapter().add_message(self.request,
messages.INFO,
'account/messages/'
'password_reset_mail_sent.txt',
{'email': form.cleaned_data["email"]})
中使用{{ email }}
,在'account/messages/password_reset_mail_sent.txt'
中使用{% if messages %}
,我可以为直接访问者提供不同的内容。
答案 1 :(得分:0)
您可以使用 Django Messages Framework 来通知用户成功或失败:
from django.contrib import messages
def my_view(request):
# your view logic goes here
if sucess_condition:
messages.success(request, 'Action accomplished with success.')
else:
messages.error(request, 'Action Failed.')
查看Messages Framework文档以获取更多详细信息和自定义。