2012-10-12 232 views
0

我有一个下拉菜单模板。下拉菜单包含几个选项(阅读链接)。当选择其中一个时,我希望突出显示下拉框。要做到这一点,我想检查请求路径是否是下拉菜单选项之一。突出显示下拉菜单在Django

I.e.说我的下拉菜单中的链接有网址为url1,url2 url2和我想这样做模板:

{% if request.path in [url1, url2, url3] %} 
    highlight dropdown menu 
{% endif %} 

什么是解决问题的最好方法?

+1

这是非常接近:[在django中导航](http://stackoverflow.com/a/477719/63011)。看看这篇文章的实现细节:[当前活动页面的Django模板标签](http://gnuvince.wordpress.com/2007/09/14/a-django-template-tag-for-the -current-active-page /) –

回答

1

您可以创建simple tag,并用它来突出下拉:

@register.simple_tag 
def check(url): 
    for elem in url_list: 
     if elem in url: 
      return true 
    return false 

,然后将其应用到您的模板:

<select {% if check request.get_full_path %}class="highlighted"{% endif %} > 
.... 
</select> 
+0

我用你的想法,而不是simple_tag我使用了一个过滤器。谢谢。 – Asterisk

0

使用Samuele的答案,我创建了这样一个过滤器:

@register.filter 
def check(url, url_list, delimeter=","): 
    url_list = url_list.split(delimeter) 
    for item in url_list: 
     if url in item: 
      return True 
    return False 

然后在我的模板中,我使用下面的代码:

{% if request.path|check:"url1,url2" %} 
    # here goes the html code 
{% endif %}