您可以創建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
我是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
更新了額外的信息,希望這會有所幫助。 –
真棒!是的,我的忍者過濾器現在可以工作。非常感謝。 – tonryray