【问题标题】:PasswordChangeView Doesn't Show Success Message in DjangoPasswordChangeView 在 Django 中不显示成功消息
【发布时间】:2021-10-25 10:42:30
【问题描述】:

我在 PasswordChangeView 上尝试了一些不同的方法,但即使使用 SuccessMessageMixin 仍然无法显示正确的成功消息

消息有效,但在单击提交按钮后无效

我想要实现的是当他/她在提交按钮后单击时向用户显示消息。 可能答案很简单,但我是新手,暂时不知道如何处理表单中的错误和成功消息。

一切正常完美更改密码并在睡眠 1 秒后重定向。

感谢大家的帮助。

class PasswordChange(SuccessMessageMixin,PasswordChangeView):
  model = User
  form_class = PasswordChangeForm
  template_name = "passwordchange.html"
  success_message = "Password Changed Successfully You will be redirected in 1 second"
  success_url = reverse_lazy("password_change_done")


class PasswordDone(PasswordChangeDoneView):
  template_name = "password_change_done.html"

  def dispatch(self, request, *args, **kwargs):
    if self.request.user.is_authenticated:
    sleep(1)
    return redirect("posts")
  return super(PasswordDone,self).dispatch(request, *args, **kwargs)

表格代码

<body>
  {{ request.user }}
    <form method="POST">
      {% csrf_token %}
      {{ form.as_p}}
      <input type="submit" value="submit">
    </form>
  {% if messages %}
  <ul class="messages">
    {% for message in messages %}
    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ 
     message }}</li>
   {% endfor %}
  </ul>
 {% endif %}
</body>

【问题讨论】:

  • 在“帖子”页面上显示消息是一个选项吗?
  • 如果您的意思是在帖子页面上显示成功消息,那也很好。如果您对此有解决方案
  • 将此添加到您的基本模板中,以便您添加的任何消息都显示在所有页面上docs.djangoproject.com/en/3.2/ref/contrib/messages/…
  • 我已经添加了它们忘记放入stackoverflow
  • 将消息部分添加到“帖子”模板中,或者理想情况下添加到所有模板都扩展的基本模板中

标签: django django-views django-forms django-class-based-views


【解决方案1】:

谢谢大家解决了

我搬家了

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

到帖子页面并显示消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 2021-08-14
    • 2016-12-14
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多