Мне понравилась идея использования инфраструктуры сообщений, но пример в документации django не работает для меня в контексте вопроса выше.
Что меня действительно раздражает, так это строка в django docs:
If you're using the context processor, your template should be rendered with a RequestContext. Otherwise, ensure messages is available to the template context.
, что непостижимо для новичка (такого как я) и нуждается в расширении, желательно с тем, как выглядят эти 2 варианта
Мне удалось найти решения, которые требовали рендеринга, только с RequestContext ... который не отвечает на вопрос выше.
Я думаю, что я создал решение для 2-го варианта ниже:
Надеюсь, это поможет кому-то еще.
== urls.py ==
from django.conf.urls.defaults import *
from views import *
urlpatterns = patterns('',
(r'^$', main_page, { 'template_name': 'main_page.html', }, 'main_page'),
(r'^test/$', test ),
== viewtest.py ==
from django.contrib import messages
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
def test(request):
messages.success( request, 'Test successful' )
return HttpResponseRedirect( reverse('main_page') )
== viewmain.py ==
from django.contrib.messages import get_messages
from django.shortcuts import render_to_response
def main_page(request, template_name ):
# create dictionary of items to be passed to the template
c = { messages': get_messages( request ) }
# render page
return render_to_response( template_name, c, )
== main_page.html ==
{% block content %}
{% if messages %}
<div>
{% for message in messages %}
<h2 class="{{message.tag}}">{{ message.message }}</h2>
{% endfor %}
</div>
{% endif %}
{% endblock %}