попробуйте использовать keyvalue pipe:
Map looping template side (keyvalue pipe) :
-
{{recipient.key}} -->
{{item.key}}
- {{element.id}}
DEMO .
Это - встроенная функция Django, названный "сообщениями"
См. http://docs.djangoproject.com/en/dev/topics/auth/#messages
Из документации:
сообщение А связано с Пользователем. Нет никакого понятия истечения или меток времени.
сообщения используются администратором Django после успешных действий. Например, "Опрос Foo был создан успешно". сообщение.
Можно ли просто передать сообщение как параметрический усилитель запроса oon URL, к которому Вы перенаправляете? Это не ужасно RESTy, но это должно работать:
return HttpResponseRedirect('/polls/%s/results/?message=Updated" % p.id)
и имеют ту проверку представления на параметрический усилитель сообщения, вычищают его для nasties и отображают его наверху.
Можно использовать django-flashcookie приложение http://bitbucket.org/offline/django-flashcookie/wiki/Home
, оно может отправить несколько сообщений и иметь неограниченные типы сообщений. Позволяет говорят, что Вы хотите один тип сообщения для предупреждения и один для сообщений об ошибках, можно записать
def simple_action(request):
...
request.flash['notice'] = 'Hello World'
return HttpResponseRedirect("/")
или
def simple_action(request):
...
request.flash['error'] = 'something wrong'
return HttpResponseRedirect("/")
или
def simple_action(request):
...
request.flash['notice'] = 'Hello World'
request.flash['error'] = 'something wrong'
return HttpResponseRedirect("/")
или даже
def simple_action(request):
...
request.flash['notice'] = 'Hello World'
request.flash['notice'] = 'Hello World 2'
request.flash['error'] = 'something wrong'
request.flash['error'] = 'something wrong 2'
return HttpResponseRedirect("/")
и затем в Вас, шаблон показывает его с [1 112]
{% for message in flash.notice %}
{{ message }}
{% endfor }}
или
{% for message in flash.notice %}
{{ message }}
{% endfor }}
{% for message in flash.error %}
{{ message }}
{% endfor }}
В то время как все предложения до сих пор работают, я предложил бы идти с Ry4an (передайте его в URL запроса) - просто изменяют фактический текст на кодированный текст в предопределенном наборе текстовых сообщений.
Два преимущества здесь:
другие связанные с cookie методы.. хорошо, они не работают, если браузер не поддерживает cookie и является немного более дорогим.. Но незначительно. Они - действительно инструмент для очистки к глазу.
Взгляните на структуру сообщений Django. http://docs.djangoproject.com/en/dev/ref/contrib/messages/#ref-contrib-messages
Есть много решений
1 Используйте Django -trunk version - поддерживает отправку сообщений анонимным пользователям
2 сеанса
def view1(request):
request.session['message'] = 'Hello view2!'
return HttpResponseRedirect('/view2/')
def view2(request):
return HttpResponse(request.session['message'])
3 перенаправление с параметром
return HttpResponseRedirect('/view2/?message=Hello+view2')
4 cookie
Вы также можете указать URL-адрес перенаправления как путь к уже параметризованному представлению.
urls.py:
(r'^some/path/(?P<field_name>\w+)/$', direct_to_template,
{'template': 'field_updated_message.html',
},
'url-name'
),
views.py:
HttpResponseRedirect( reverse('url-name', args=(myfieldname,)) )
Обратите внимание, что args = должен принимать кортеж.