поддерживать состояние между вызовами пользовательских тегов? - PullRequest
0 голосов
/ 22 сентября 2011

Есть ли способ поддерживать состояние между вызовами тегов?Мне нужно сохранить последний элемент, переданный тегу, который я создал.Казалось, что я мог бы использовать контекст, чтобы сделать это, но это не похоже на работу.Вот мой код:

@register.simple_tag(takes_context=True)
def date_divider(context, date):
    if 'last_date' not in context or context['last_date'] != date:
        # display new date header
        context['last_date'] = date
    return date_header

Проблема в том, что новый заголовок даты всегда создается, даже если переданная дата должна соответствовать дате в контексте.

Я предполагаю, что я использую контекст неправильно здесь ... Есть ли способ сохранить эту последнюю дату в контексте или есть лучший способ сделать это?

1 Ответ

1 голос
/ 22 сентября 2011

Кажется вероятным, что контекст, в который вы вводите last_date, больше не существует во второй раз, когда вы достигаете этого тега (например, может быть, этот контекст уже всплыл?).(Хакерское) решение состоит в том, чтобы убедиться, что вы вставляете last_date в «самый высокий» контекст:

if 'last_date' not in context.dicts[0] or context.dicts[0]['last_date'] != date:
    context.dicts[0]['last_date'] = date

Такой подход часто требуется, когда написанные вами теги не"вложенный", я нашел.Кстати, я также обнаружил, что подобные теги сами по себе часто являются хакерами!

(Нельзя сказать, что это конкретный случай, просто это были мои случаи).

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