Джанго - Разбить request.path на каждое слово? - PullRequest
0 голосов
/ 06 октября 2011

Я хочу взять URL из request.path в шаблоне и проверить только первое слово.Если мой URL такой:

/estimates/commercial

Я хочу каким-то образом удалить commercial из request.path.Я надеялся, что это возможно и в шаблоне, так как мне нужно делать эту проверку на каждой странице.

Возможно ли это в моем шаблоне Django?

РЕДАКТИРОВАТЬ - для пояснения

Цель этого - выделить навигационную ссылку в зависимости от того, какая страница просматривается в данный момент.У меня есть основная навигация и вспомогательная навигация, и я хочу выделить следующее:

main nav           --> [Systems][Estimates]
"Systems" sub nav ---> [New][Details][Invoives]

Если я нахожусь в разделе Details раздела Systems, я хочу слова System и Details другого цвета, либо подчеркнутые, либо что-то еще.

Ответы [ 3 ]

4 голосов
/ 06 октября 2011

Возможны следующие варианты:

  1. Запись ContextProcessor

  2. Создание настраиваемого фильтра шаблона.Я бы порекомендовал просто написать фильтр разделенных шаблонов, а затем использовать фильтры объединения и фрагментов, чтобы получить желаемый эффект.Тем не менее, может быть проще написать фильтр, который все это делает.

По правде говоря, я бы посчитал №1 лучшим вариантом.Вы используете контекстные процессоры уже правильно?Если нет, то сейчас время =)

def somename(request):
    return { 'some_context_var': request.path.split('/')[:-1] }

Редактировать:

Если ваш путь был / что-то / foo / bar / оценки / коммерческий /

def somename(request):
    primary, secondary  = request.path.split('/')[-2:]
    return { 'primary_name': primary, 'secondary_name': secondary }

даст вам 2 контекста с «оценками» и «коммерческими» в качестве их значений.Эту идею довольно легко расширить или даже сделать более абстрактной и разрешить добавление произвольного числа переменных контекста.

1 голос
/ 06 октября 2011

Вы можете использовать django-treemenus , который может быть расширен многими способами.В руководстве также есть пример того, как выделить элемент навигации, если пользователь находится в пределах определенного пути.

0 голосов
/ 06 октября 2011

Без написания собственного пользовательского шаблона фильтра было бы проще сделать это в коде представления и передать соответствующую часть в шаблон.

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