我正在使用默认更改密码机制 https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.views.password_change由 django 提供。
我在用着post_change_redirect
让提交的表单直接返回到我的设置页面,但是我想显示一条消息,以向用户保证操作已成功。如何检测密码更改成功是否导致我进入设置视图,并添加一条消息来实现这一效果?
我不建议在设置视图中检查用户是否已通过密码更改到达。我认为理想情况下,密码更改的所有逻辑都包含在同一位置。这使得更容易找到逻辑,并且不需要设置视图了解密码更改视图(因此您可以轻松更改逻辑以将用户重定向到其他地方)。
你最好的选择是根据以下内容写下你自己的观点PasswordChangeForm
而不是使用内置的password_change
看法。通过这种方法,您可以使用消息框架 https://docs.djangoproject.com/en/dev/ref/contrib/messages/显示成功消息。 (您还必须启用消息框架并将其标记放入您的视图中。)
例如,如果您想显示一条简单的消息并重定向回名为的 URL 模式'settings'
,您可以编写一个如下所示的视图:
from django.contrib import messages
from django.contrib.auth.forms import PasswordChangeForm
from django.core.urlresolvers import reverse_lazy
from django.views.generic import FormView
class PasswordChangeView(FormView):
template_name = 'registration/password_change_form.html'
form_class = PasswordChangeForm
success_url = reverse_lazy('settings')
def get_form_kwargs(self):
kwargs = super(PasswordChangeView, self).get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
def form_valid(self, form):
form.save()
messages.success(self.request, "Your password has been changed.")
return super(FormView, self).form_valid(form)
希望,password_change
将来视图将基于类,从而允许使用更少的样板来实现相同的行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)