Django将messages.error消息添加到FormView



在表单提交给用户后,我需要显示一条错误消息。该条件是在FormViewform_valid函数中设置的,但它不是特定于表单的,我不想更改现有的表单逻辑。这就是我尝试过的

def form_valid(self, form):
...
if condition:
messages.error(self.request, 'Please ...')
return super(...)

也尝试过这个-

def form_valid(self, form):
...
if condition:
self.message = 'Please ...'
return super(...)
def get_success_url(self):
if self.message:
messages.add_message(self.request, messages.ERROR, self.message)
return self.success_url

它们都不起作用。在DeleteView中,这可以通过覆盖delete函数来实现,FormView如何实现?

你的第一种方法是正确的,但你也需要在你的html模板中添加,所以在views.py 中

from django.contrib import messages
def form_valid(self, form):
...
if condition:
messages.error(self.request, 'Please ...')
return super(...)

在HTML模板中添加此

{% if messages %}
<ul class="alert alert-danger" style="list-style: none;">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}" {% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}

最新更新