在我的django
应用index.html
(我认为是网站的home page
)中,我提供了指向网站中各个位置的链接。当用户到达其中一个位置时,他应该在那里找到一个链接,回到主页。所以我创建了一个base.html
,包括index.html
在内的所有网页都会继承。在base.html
,我提供这些链接。
base.html文件
...
<a href="{%url archives %}"> Archives </a>
<br/>
<a href="{% url reports %}"> Reports </a>
<br/>
<a href="{% url home %}"> Home </a>
<br/>
..
我的问题是,当我在索引页面(主页)上时,我不想显示主页链接。这是否可以在模板中使用{% if %}
条件?
目前我没有在视图中传递任何参数
@login_required
def index(request, template_name):
print 'index()::template=',template_name
return custom_render(request, {},template_name )
def custom_render(request,context,template):
req_context=RequestContext(request,context)
return render_to_response(template,req_context)
答案 0 :(得分:3)
首先,您可以使用django render
shortcut来避免使用冗长的custom_render
。
from django.shortcuts import render
@login_required
def index(request, template_name):
return render(request, template_name,extra={})
你可以厚颜无耻地在你的base.html
做类似的事情:
{% url home as home_url %}
{% if request.path != home_url %}<a href="{{ home_url }}">Home</a>{% endif %}
快速检查当前页面是否为主页。
如果将来可能会变得更复杂,您可以使用模板标记来检查您所在的当前网址是否与其他网址匹配。这是我之前用过的模板标签,用于检查菜单链接当前是否处于活动状态:
答案 1 :(得分:1)
这不完全是你要求的,但是我通常更喜欢使用JavaScript来隐藏或更改当前页面的链接颜色。例如,如果您使用的是jQuery:
// Assumes relative paths in a elements
$('a[href="' + window.location.pathname + '"]').each(function (index, element) {
$(element).addClass('someClass');
});
someClass
可以是一个CSS规则,用于将该元素的'display'属性设置为'none',或简单地使链接看起来像纯文本,并且当鼠标悬停或单击时表现得像纯文本它。
这有两个可能的优点:
这不是灵丹妙药,但我认为重要的是要认识到有时这些事情不一定最好在模板中完成。我首先想到我的django模板作为构建数据的一种方式。它们总会有一些演示元素,但我尽可能地删除它。其他人不同意。