В Django, как я могу отобразить сообщение (используя Message Framework) без циклического прохождения? - PullRequest
0 голосов
/ 06 декабря 2010
messages.success(request, "Success. Your settings have been saved.")

Хорошо, теперь в моем шаблоне я делаю это:

 {% if messages %}
    {% for m in messages %}
        <div class="notification_message" data-message="{{ m }}">{{ m }}</div>
    {% endfor %}
    {% endif %}

Но это глупо !!! У меня есть только 1 сообщение. Я не хочу, чтобы это проходило. Как мне просто отобразить верхнее сообщение? Самое важное сообщение. Или как вывести сообщение об успехе?

1 Ответ

0 голосов
/ 06 декабря 2010

Насколько я знаю, нет способа сделать это из самого шаблона (конечно, без пользовательского тега или фильтра). Это довольно легко выполнить вне шаблона, хотя (не проверено):

from django.contrib.messages import get_messages, constants as message_level

def last_message(messages, level = None):
    """Returns the last Message object in the messages with the
    specified level, or just the last message if no level is
    specified
    """

    if level is None:
        return None if not messages else messages[-1]

    level = int(level)    # Not strictly necessary, but Message object does this in its __init__()
    for message in reversed(messages):
        if message.level == level:
            return message
    return None

Использование:

messages = get_messages(request)
the_last_message = last_message(messages)
the_last_success_message = last_message(messages, message_level.SUCCESS)

Затем вы можете передать эти значения в шаблон через контекст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...