Mi è piaciuta l'idea di utilizzare il framework del messaggio, ma l'esempio nella documentazione di django non funziona per me nel contesto della domanda precedente.
Quello che veramente mi infastidisce, è la linea nella documentazione Django:
If you're using the context processor, your template should be rendered with a RequestContext. Otherwise, ensure messages is available to the template context.
che è incomprensibile per un novizio (come me) e ha bisogno di espansione su, preferibilmente con ciò che quelle 2 opzioni sembrano .
Sono stato in grado di trovare solo soluzioni che richiedevano il rendering con RequestContext ... che non risponde alla domanda di cui sopra.
Credo di aver creato una soluzione per il 2 ° delle seguenti opzioni:
Speriamo che questo vi aiuterà a qualcun altro.
== == 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 %}
Penso che questo problema sia abbastanza comune in tutti i framework e non sia limitato a django/python. – Jiri
@Jiri, sì, ma alcuni framework forniscono supporto per questo. –
codifica il messaggio nella stringa di query dell'URL a cui stai reindirizzando. dovrebbe funzionare in qualsiasi contesto. –