在 FormView form_invalid 内显示 django 消息

show django messages inside form_invalid of FormView

当表单无效时,如何在使用 FormView class 时显示消息?我可以在 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))

可能喜欢这个;

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.