LINUX.ORG.RU

Как вывести?

 


0

1

Есть простая форма обратной связи, для отображения использую views.generic.FormView:

class ContactFormMixin(object):
    def form_valid(self, form):
        cleaned_data = form.cleaned_data
        send_mail(
            cleaned_data['subject'],
            cleaned_data['message'],
            cleaned_data.get('email', 'noreply@noreply.com'),
            [mail[1] for mail in settings.ADMINS],
        )
        return super(ContactFormMixin, self).form_valid(form)

    def get_success_url(self):
        return ''


class ContactFormView(ContactFormMixin, FormView):
    template_name = 'contact_form/contact_form.html'
    form_class = ContactForm

Пытаюсь понять как можно сделать чтобы get_success_url отправлял на туже страницу но с доп флагом что письмо отправлено успешно (сейчас просто отправляет на туже страницу), хочется что-то вроде render_to_response с указанным доп флагом. В шаблоне хочется видеть такое:

{% if is_successful%}
    Message sended.
{% endif %}
<form action="" method="post">{% csrf_token %}
    <p>{{ form.as_ul }}</p>
    <input type="submit" value="{% trans "Contact Us" %}" />
</form>

В form_valid добавляешь нужный флаг. Можно так сделать. У меня, например, в form_valid'е добавляются нотификации успешности/неуспешности валидации формы.

jessey
()
Ответ на: комментарий от Gr1N

Ну держи, лол:

def form_valid(self, form):
        message = u'Бла бла бла воруй убивай'
        notify_success(self.request, message=message)
        return super(ProfileContactsEditView, self).form_valid(form)
notify_success, как ты наверное понял, засовывает объект нотификации в request. Можешь засунуть в реквест свой флаг, а в шаблоне прочекать. Можешь после валидации формы взвести её скрытый флаг, например, и проверять его (но это сомнительно как-то), а можешь и messages заюзать, как тут подсказали (у меня обёртка над ними). Вариантов куча.

jessey
()
Ответ на: комментарий от Bers

Messages то что нужно, всем спасибо.

Gr1N
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.