【问题标题】:show django messages inside form_invalid of FormView在 FormView 的 form_invalid 中显示 django 消息
【发布时间】:2017-03-17 03:22:31
【问题描述】:

当表单无效时,如何在使用 FormView 类时显示消息?我可以在 form_valid 函数中显示消息,但不知道 form_invalid 因为我正在使用 self.get_context_data。

这是我在表单有效时显示消息所做的操作

def form_valid(self, form):
    messages.success(self.request, '{0} added successfully'.format(name))
    return HttpResponseRedirect('/')

我如何在这里使用消息?

def form_invalid(self, form):
    return self.render_to_response(self.get_context_data(form=form))

【问题讨论】:

  • 是的,你可以......你可以看到这个example
  • 我想在模板中将消息显示为“您已经发布”而不是表单错误。

标签: python django django-1.9


【解决方案1】:

也许像这个;

def form_invalid(self, form):
    name = 'john'
    messages.warning(self.request, '{0} error'.format(name))

    return self.render_to_response(
        self.get_context_data(request=self.request, form=form))

说明:

messages.warning(self.request, '{0} error'.format(name)) 放在self.render_to_response(**kwargs) 之前,为什么?这是为了用您的消息更新您的self.request

self.render_to_response(**kwargs) 正在使用**kwargs 参数。 其中一个用于formrequest 字段。看到这个docs

【讨论】:

  • 是的,这行得通。你能告诉我为什么在 get_context_data 中使用 request=self.request 有效吗?是不是因为,您在 messages.warning 中覆盖了 self.request?
  • 我已将您的答案标记为已解决。请您也可以在答案中解释我的上述问题吗?
猜你喜欢
  • 1970-01-01
  • 2020-11-27
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-09
相关资源
最近更新 更多