我刚刚用django做了我的第一个小webapp,我喜欢它。我将开始将一个旧的生产PHP站点转换为django,并且作为其模板的一部分,有一个导航栏。
在PHP中,我在模板代码中根据当前URL检查每个导航选项的URL,如果它们排列在一起,则应用一个CSS类。这是可怕的混乱。
有没有更好的django或者处理模板中代码的好方法?
首先,我该如何获取当前的URL?
发布于 2008-12-04 19:26:08
我使用模板继承来定制导航。例如:
base.html
<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
{% extends "base.html" %}
{% block nav-about %}<strong class="nav-active">About</strong>{% endblock %}
发布于 2009-01-25 14:00:34
你不需要if就能做到这一点,看看以下代码:
tags.py
@register.simple_tag
def active(request, pattern):
import re
if re.search(pattern, request.path):
return 'active'
return ''
urls.py
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
{% 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>
就这样。有关实现的详细信息,请查看:
发布于 2008-12-04 19:09:34
您可以将类或id应用于页面的body元素,而不是应用于特定的导航项目。
HTML:
<body class="{{ nav_class }}">
CSS:
body.home #nav_home,
body.about #nav_about { */ Current nav styles */ }
https://stackoverflow.com/questions/340888
复制相似问题