Обычно Django добавляет /
к URL, так что может быть в случае изменения в:
{% if request.path == '/phylosophy/' %}class="active"{% endif %}>
Extra:
Дело такого подхода заключается в том, что, если у вас есть более глубокое URL, например, /phylosophy/list/
, вы все равно можете сохранить класс active
, поэтому я обычно создаю шаблонный шаблон, называемый startswith
:
@register.filter('startswith')
def startswith(text, starts):
if isinstance(text, basestring):
return text.startswith(starts)
return False
И затем использовать его как:
<li{% if request.path|startswith:'/phylosophy/' %} class="active"{% endif %}>
PS:
В случае request.path
пусто при печати, возможно, потребуется, чтобы добавить его в контекст процессоров (django.template.context_processors.request
), пример :
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'APP_DIRS': True,
'DIRS': (
PROJECT_DIR.child('templates'),
),
'OPTIONS': {
'context_processors': [
'django.contrib.auth.context_processors.auth',
'django.template.context_processors.debug',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'django.contrib.messages.context_processors.messages',
'django.template.context_processors.request',
],
'debug': DEBUG
}
},
]
Возможный дубликат [Django динамически получить URL-адрес просмотра и проверить, есть ли его текущая страница] (http: // stackoverflow. com/questions/22047251/django-dynamically-get-view-url-and-check-if-its-the-current-page) – Sayse
Вы пытались напечатать '{{request.path}}', чтобы проверить, действительно равным тому, с чем вы сравниваетесь? – Selcuk