Как отобразить messages?

Есть абстрактный пример. В результате надо вывести success_message в шаблон. Но в итоге отображается пустая страница. Все импорты присутствуют. Подскажите, что не так?

models.py:
class Author(models.Model):
    name = models.CharField(max_length=200)

urls.py:
url(r'^example/$', AuthorCreate.as_view()),

views.py:
class AuthorCreate(SuccessMessageMixin, ListView):
    model = Author
    template_name = "example.html"

    success_message = "Hello world"

example.html:
{% if messages %}
    {% for message in messages %}
        <p{% if message.tags %} class="{{message.tags}}"{% endif %}>{{message}}</p>
    {% endfor %}
{% endif %}
  • Вопрос задан
  • 758 просмотров
Пригласить эксперта
Ответы на вопрос 2
winordie
@winordie
Лучшая документация -- исходники
Вы исходники вообще смотрели? Если что вот они:
class SuccessMessageMixin(object):
    """
    Adds a success message on successful form submission.
    """
    success_message = ''

    def form_valid(self, form):
        response = super(SuccessMessageMixin, self).form_valid(form)
        success_message = self.get_success_message(form.cleaned_data)
        if success_message:
            messages.success(self.request, success_message)
        return response

    def get_success_message(self, cleaned_data):
        return self.success_message % cleaned_data

Перевожу:
success_message выводит метод form_valid, который в свою очередь вызывается из метода post при отправке формы когда она не содержит ошибок. ListView не содержит никаких форм, поэтому по определению никак не может вывести message.
Ответ написан
Комментировать
sim3x
@sim3x
https://docs.djangoproject.com/en/1.8/ref/class-ba...

class AuthorCreate(SuccessMessageMixin, ListView):
    model = Author
    template_name = "example.html"

    def get_context_data(self, **kwargs):
        context = super(AuthorCreate, self).get_context_data(**kwargs)
        context['some_text_to_tpl'] = "Hello world"
        return context


#html
{{ some_text_to_tpl }}


Для создания следует использовать CreateView https://docs.djangoproject.com/en/1.8/ref/class-ba...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы