Django Добавить сообщение messages.error в FormView - PullRequest
0 голосов
/ 07 августа 2020

Мне нужно показать сообщение об ошибке после отправки формы пользователю. Условие устанавливается внутри функции form_valid из FormView, но оно не определяется формой c, и я не хочу изменять существующую форму logi c. Это то, что я пробовал -

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?

1 Ответ

1 голос
/ 07 августа 2020

ваш первый способ правильный, но вам также нужно добавить к нему в свой шаблон html, поэтому в views.py

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

в HTML Template добавьте это

{% 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 %}
...