2016-07-25 1 views
0

Я пытаюсь скрыть/показать разделы моей навигации в зависимости от моего активного URL.Django отображает элементы списка на основе URL

Я попытался сделать это, используя метод re.match(), но jinja не понравилось. Этот код содержится в файле HTML include для моей боковой навигации и выглядит следующим образом:

<ul> 
{% if bool(re.match('^/url/path', request.get_full_path)) %} 
    <li><a href='link1'>Link1</a></li> 
    <li><a href='link1'>Link2</a></li> 
    <li><a href='link1'>Link3</a></li> 
{% endif %} 
</ul> 

Заранее благодарен.

ответ

1

Вы можете создать custom filter и использовать его. Что-то вроде этого, может быть;

# nav_active.py 
import re 
from django.template import Library 
from django.core.urlresolvers import reverse 

register = Library() 

@register.filter() 
def nav_active(request_path, search_path): 
    # WRITE YOUR LOGIC 
    return search_path in request_path 

Внутри шаблона

{% load nav_active %} 
{% if request_path|nav_active:"/search/path" %} 
.... 
{% endif %} 

Дополнение за ваш комментарий. С Django docs code layout section для пользовательских тегов шаблонов и фильтров:

The app should contain a templatetags directory, at the same level as models.py, views.py, etc. If this doesn’t already exist, create it - don’t forget the init.py file to ensure the directory is treated as a Python package.

Так создать папку на том же уровне, как ваш view.py и назовите его templatetags. (Не забудьте добавить __init__.py внутри). На том же уровне, что __init__.py добавьте nav_active.py и он должен быть готов к использованию. Например:

yourapp/ 
    __init__.py 
    models.py 
    views.py 
    templatetags/ 
    __init__.py 
    nav_active.py 
+0

Я новичок в django, поэтому не знаю, где разместить файл nav_active.py. Я поместил его в каталог установленного приложения, которое у меня есть, но я получил следующую ошибку: «nav_active» не является зарегистрированной библиотекой тегов. Должен быть одним из: admin_list admin_modify admin_static admin_urls cache future i18n l10n log static staticfiles tz. Где я должен поместить файл nav_active.py? – tonryray

+0

Обновлено с дополнительной информацией, надеюсь, что это поможет. –

+0

Awesome !! Да, мой фильтр jinja теперь работает. Огромное спасибо. – tonryray