首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >django中的导航

django中的导航
EN

Stack Overflow用户
提问于 2008-12-04 15:06:43
回答 24查看 96.7K关注 0票数 115

我刚刚用django做了我的第一个小webapp,我喜欢它。我将开始将一个旧的生产PHP站点转换为django,并且作为其模板的一部分,有一个导航栏。

在PHP中,我在模板代码中根据当前URL检查每个导航选项的URL,如果它们排列在一起,则应用一个CSS类。这是可怕的混乱。

有没有更好的django或者处理模板中代码的好方法?

首先,我该如何获取当前的URL?

EN

回答 24

Stack Overflow用户

回答已采纳

发布于 2008-12-04 19:26:08

我使用模板继承来定制导航。例如:

base.html

代码语言:javascript
复制
<html>
    <head>...</head>
    <body>
        ...
        {% block nav %}
        <ul id="nav">
            <li>{% block nav-home %}<a href="{% url 'home' %}">Home</a>{% endblock %}</li>
            <li>{% block nav-about %}<a href="{% url 'about' %}">About</a>{% endblock %}</li>
            <li>{% block nav-contact %}<a href="{% url 'contact' %}">Contact</a>{% endblock %}</li>
        </ul>
        {% endblock %}
        ...
    </body>
</html>

about.html

代码语言:javascript
复制
{% extends "base.html" %}

{% block nav-about %}<strong class="nav-active">About</strong>{% endblock %}
票数 85
EN

Stack Overflow用户

发布于 2009-01-25 14:00:34

你不需要if就能做到这一点,看看以下代码:

tags.py

代码语言:javascript
复制
@register.simple_tag
def active(request, pattern):
    import re
    if re.search(pattern, request.path):
        return 'active'
    return ''

urls.py

代码语言:javascript
复制
urlpatterns += patterns('',
    (r'/$', view_home_method, 'home_url_name'),
    (r'/services/$', view_services_method, 'services_url_name'),
    (r'/contact/$', view_contact_method, 'contact_url_name'),
)

base.html

代码语言:javascript
复制
{% load tags %}

{% url 'home_url_name' as home %}
{% url 'services_url_name' as services %}
{% url 'contact_url_name' as contact %}

<div id="navigation">
    <a class="{% active request home %}" href="{{ home }}">Home</a>
    <a class="{% active request services %}" href="{{ services }}">Services</a>
    <a class="{% active request contact %}" href="{{ contact }}">Contact</a>
</div>

就这样。有关实现的详细信息,请查看:

gnuvince.wordpress.com

110j.wordpress.com

票数 122
EN

Stack Overflow用户

发布于 2008-12-04 19:09:34

您可以将类或id应用于页面的body元素,而不是应用于特定的导航项目。

HTML:

代码语言:javascript
复制
<body class="{{ nav_class }}">

CSS:

代码语言:javascript
复制
body.home #nav_home,
body.about #nav_about { */ Current nav styles */ }
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/340888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档