我正在尝试隐藏/显示导航部分,具体取决于我的有效网址。
我尝试使用re.match()
方法执行此操作,但jinja不喜欢这样。此代码位于我的侧面导航的HTML包含文件中,如下所示:
<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>
提前致谢。
答案 0 :(得分: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获取自定义模板标签和过滤器:
应用程序应包含templatetags目录,与models.py,views.py等处于同一级别。如果尚不存在,请创建它 - 不要忘记 init .py文件以确保将目录视为Python包。
因此,请在与view.py
相同的级别创建一个文件夹,并将其命名为templatetags
。 (别忘了在里面添加__init__.py
)。在__init__.py
的同一级添加您的nav_active.py
,它应该可以使用了。像这样:
yourapp/
__init__.py
models.py
views.py
templatetags/
__init__.py
nav_active.py