Django易于使用的活动URL突出显示
django-activeurl的Python项目详细描述
Django易于使用的活动URL突出显示功能
功能
- 通过css类自动突出显示当前活动的<a>标记
- 自动突出显示菜单的父标记<a>。
- 从你的生活中去除无聊/硬编码的东西!
- 不会因为与诸如 引导导航。
用法
通过加载模板库之后
{%loadactiveurl%}
如果request.full_path()以/some_page/开头,则下面的代码片段将按如下方式呈现:
{%activeurl%}<ul><li><!-- this <li> will render as <li class="active"> --><ahref="/some_page/"> some_page </a></li><li><ahref="/another_page/"> another_page </a></li></ul>{%endactiveurl%}
注意:{% activeurl %}…{% endactiveurl %}的内容必须具有有效的根标记(即。 <ul>或<div>等)–否则将引发异常。
安装
支持Python2.7+、3.4+。
使用pip:
安装stable版本pip install django-activeurl
或者使用pip:
pip install -e git+git://github.com/hellysmile/django-activeurl#egg=django_activeurl
在settings.py中添加以下内容:
INSTALLED_APPS=(...'django_activeurl',...)TEMPLATE_CONTEXT_PROCESSORS=(...'django.core.context_processors.request',...)
需要lxml库,因此需要安装其他库来构建它:
ubuntu:
sudo apt-get install libxml2 libxml2-dev libxslt-dev build-essential python-dev sudo ldconfig
软呢帽:
sudo yum groupinstall 'Development Tools' sudo yum install libxslt-devel libxml2 libxml2-devel python-devel sudo ldconfig
MacOS X:
brew install libxml2 libxslt sudo update_dyld_shared_cache -force
窗口: 可以找到预构建的lxml二进制文件here
云: 有99.99%的可能性lxml将是现成的。
选项
忽略_params=“是否”(默认值:“否”)
ignore_params将忽略url的get参数,例如。 /accounts/login/将匹配/accounts/login/?下一步=/accounts/signup/。
parent_u tag=“div li self…”(默认值:“li”)
parent_tag定义当url中存在匹配时,父元素(而不是标记本身)应该声明为active。当需要更改<a>标记的css类时,只需输入“self”。
css“class=”<;string>;“(默认值:“活动”)
定义要添加到活动元素的css类。
配置
默认选项也可以在settings.py中设置:
ACTIVE_URL_KWARGS={'css_class':'active','parent_tag':'li','menu':'yes','ignore_params':'no'}ACTIVE_URL_CACHE=TrueACTIVE_URL_CACHE_TIMEOUT=60*60*24# 1 dayACTIVE_URL_CACHE_PREFIX='django_activeurl'
默认情况下,django activeurl将尝试在查找活动url并构建新的html树之前从django的缓存后端检索先前呈现的html节点。您可以使用ACTIVE_URL_CACHE = False禁用缓存。
此外,ACTIVE_URL_CACHE_TIMEOUT可用于定义密钥过期的超时。默认值为一天。
最后一个配置选项是ACTIVE_URL_CACHE_PREFIX(默认情况下是django_activeurl),并定义在django的缓存后端中使用哪个名称。
测试
pip install tox tox
Jinja2
香草型Jinja2配置:
fromjinja2importEnvironmentfromdjango_activeurl.ext.django_jinjaimportActiveUrlenv=Environment(extensions=[ActiveUrl])
可省略选项:
{%activeurlcss_class="active",menu="yes",parent_tag="li",ignore_params="no"%} <ul> <li> <a href="/page/">page</a> </li> <li> <a href="/other_page/">other_page</a> </li> </ul> {%endactiveurl%}
如果你在使用django-jinja 您需要在settings.py中加载ActiveUrl。
django 1.8+jinja2环境加载程序示例可以在tests中找到。
背景
为了构建html元素树django activeurl使用lxml,这是最好的html解析之一 周围的工具。更多信息和基准可以在habrahabr.ru(俄语)找到。注意没有 当找不到活动url时,在模板标记内重建内容,因此 对性能没有影响。