Пробовали тонны вещей там, но ни один из них не помог.Сообщения Django, которые не отображаются после HttpResponseRedirect
У меня есть URL
, например:
который называет ниже view
:
def edit_transaction(request):
if request.method == "POST":
if something is True:
messages.error(request, 'Error message here')
# this don't work
return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
# but this work
template = "user/xyz/abc.html"
render(request, template)
else:
return HttpResponseNotFound()
else:
context = {
'key1': 'value1',
'key2': 'value2',
}
template = "user/xyz/abc.html"
render(request, template, context)
И внутри шаблона:
{% if messages %}
<h1>I am inside MESSAGES</h1>
{% for message in messages %}
{% if message.tags == 'success' %}
<div class="alert alert-success" role="alert">{{ message|escape|safe }}</div>
{% elif message.tags == 'error' %}
<div class="alert alert-danger" role="alert">{{ message|escape|safe }}</div>
{% endif %}
{% endfor %}
{% endif %}
Это становится внутри if
здесь if something is True:
и перенаправляется на ту же страницу с помощью строки запроса. Но не отображать сообщение об ошибке.
Я хочу перенаправить на ту же страницу, сохранив строку запроса и отобразив сообщение об ошибке. Что я делаю неправильно здесь и какие изменения рекомендуются (если есть).
Также есть сомнения, что сообщения Django действительно работают после перенаправления, такие как Flash-сообщения?
Edit:
1) Это не работает:
if something is True:
messages.error(request, 'Error message here')
return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
С консоли:
[16/Сентябрь/2015 10 : 57: 08] "POST /пользователь/редактирование-транзакции /? Object_id = 23a959d0561711e59e36acd1b8679265 & тип = grossary HTTP/1.1" 302 0 [16/Сен/2015 10:57:08] "GET /пользователь/редактировать-транзакции /? Object_id = 23a959d0561711e59e36acd1b8679265 & тип = grossary HTTP/1.1" 200 8832
2) Это работает:
if something is True:
messages.error(request, 'Error message here')
template = "user/xyz/abc.html"
render(request, template)
Из консоли:
[16/Сентябрь/2015 10:57:08] "POST /пользователь/редактирование-транзакции /? Object_id = 23a959d0561711e59e36acd1b8679265 & тип = grossary HTTP/1.1" 302 0
Так, в основном, что Я понял сверху, что messages
истекает с дополнительным запросом (перенаправление, 200).
И в шаблонах, не попадая внутрь {% if messages %}
, а также для печати <h1>I am inside MESSAGES</h1>
Вы добавили обработчик контекста 'django.contrib.m.macages.context_processors.messages' в' TEMPLATE_CONTEXT_PROCESSORS' в файле 'settings.py'? – ozgur
Да, я покончил с этим. –
Можете ли вы напечатать 'message.tags', поскольку это может быть нечто иное, чем простая строка? – ozgur