当用户直接转到 allauth 中的“/password/reset/done/”时重定向或显示不同的内容?
Redirect or Display different content while user directly goes to '/password/reset/done/' in allauth?
当用户请求重设密码时,他将被重定向到 /password/reset/done/
,告诉用户 'We have sent you an e-mail...',但如果您直接转到该页面,您会得到相同的信息,这有点混乱,因为没有电子邮件发送给任何人。
是否有可以在 password_reset_done.html
模板中使用的变量,例如 {{ messages }}
,以便在 if
条件下其他内容可以显示给直接访问者?如果没有,有没有办法做到这一点?
编辑:
请不要急于将此标记为 How to use the built-in 'password_reset' view in Django? 的重复问题。
我知道如何显示该页面 /password/reset/done/
,这基本上是一个专门用于告诉用户 "we've sent you an email so that you can follow the link to reset your password..." 的阶段,而您所指的问题是关于如何正确密码重置成功时重定向用户。
我正在寻找的是一种方法,可以将它重定向到另一个页面,或者在用户尝试直接浏览该页面时显示一些不同的东西(人们有时会这样做)应该在之后查看他成功提交了密码重置请求。我需要某种钩子来让它工作。
您可以使用 Django 消息框架 通知用户成功或失败:
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 文档以了解更多详细信息和自定义。
查看 /account/views.py
中的代码后,我意识到需要在前一个 /password/reset/
页面中添加一条消息,以便它可以在下一个 /password/reset/done/
页面中使用.
这是一个例子:
在class PasswordResetView
的form_valid
方法中添加:
get_adapter().add_message(self.request,
messages.INFO,
'account/messages/'
'password_reset_mail_sent.txt',
{'email': form.cleaned_data["email"]})
现在我可以在 'account/messages/password_reset_mail_sent.txt'
中使用 {{ email }}
,在 password_reset_done.html
中使用 {% if messages %}
我可以为直接访问者提供不同的内容。
当用户请求重设密码时,他将被重定向到 /password/reset/done/
,告诉用户 'We have sent you an e-mail...',但如果您直接转到该页面,您会得到相同的信息,这有点混乱,因为没有电子邮件发送给任何人。
是否有可以在 password_reset_done.html
模板中使用的变量,例如 {{ messages }}
,以便在 if
条件下其他内容可以显示给直接访问者?如果没有,有没有办法做到这一点?
编辑:
请不要急于将此标记为 How to use the built-in 'password_reset' view in Django? 的重复问题。
我知道如何显示该页面 /password/reset/done/
,这基本上是一个专门用于告诉用户 "we've sent you an email so that you can follow the link to reset your password..." 的阶段,而您所指的问题是关于如何正确密码重置成功时重定向用户。
我正在寻找的是一种方法,可以将它重定向到另一个页面,或者在用户尝试直接浏览该页面时显示一些不同的东西(人们有时会这样做)应该在之后查看他成功提交了密码重置请求。我需要某种钩子来让它工作。
您可以使用 Django 消息框架 通知用户成功或失败:
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 文档以了解更多详细信息和自定义。
查看 /account/views.py
中的代码后,我意识到需要在前一个 /password/reset/
页面中添加一条消息,以便它可以在下一个 /password/reset/done/
页面中使用.
这是一个例子:
在class PasswordResetView
的form_valid
方法中添加:
get_adapter().add_message(self.request,
messages.INFO,
'account/messages/'
'password_reset_mail_sent.txt',
{'email': form.cleaned_data["email"]})
现在我可以在 'account/messages/password_reset_mail_sent.txt'
中使用 {{ email }}
,在 password_reset_done.html
中使用 {% if messages %}
我可以为直接访问者提供不同的内容。