Django的易于使用的活动URL高亮显示
项目描述
Django的易于使用的活动URL高亮显示
功能
通过CSS类自动高亮显示当前活动的<a>标签
自动高亮显示菜单的父级<a>标签
从你的生活中移除无聊/硬编码的东西!
href=" #" 从不因兼容bootstrap nav等技术而引发高亮显示
用法
通过以下代码片段加载模板库后
{% load activeurl %}
如果request.full_path()以/some_page/开头,以下代码片段将渲染为:
{% activeurl %}
<ul>
<li> <!-- this <li> will render as <li class="active"> -->
<a href="/some_page/">
some_page
</a>
</li>
<li>
<a href="/another_page/">
another_page
</a>
</li>
</ul>
{% endactiveurl %}
注意: {% activeurl %}…{% endactiveurl %} 的内容必须具有有效的根标签(例如 <ul> 或 <div> 等)——否则将引发异常。
安装
支持 Python 2.7+ 和 3.4+。
使用 pip 安装 稳定 版本
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
Fedora
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
Windows:可以在这里找到预构建的 lxml 二进制文件
云服务:有 99.99% 的可能性 lxml 将直接构建。
选项
ignore_params =“是|否” (默认: “否”)
ignore_params 将忽略 URL 的 GET 参数,例如 /accounts/login/ 将匹配 /accounts/login/?next=/accounts/signup/。
parent_tag =“div|li|self|…” (默认: “li”)
parent_tag 定义当 URL 匹配时,应声明父元素——而不是 <a> 标签本身——为 活动。当您需要更改 <a> 标签的 CSS 类时,只需输入“self”。
css_class =“<字符串>” (默认: “active”)
定义要添加到活动元素的 CSS 类。
配置
默认选项也可以在 settings.py 中设置
ACTIVE_URL_KWARGS = {
'css_class': 'active',
'parent_tag': 'li',
'menu': 'yes',
'ignore_params': 'no'
}
ACTIVE_URL_CACHE = True
ACTIVE_URL_CACHE_TIMEOUT = 60 * 60 * 24 # 1 day
ACTIVE_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
Vanilla Jinja2 配置
from jinja2 import Environment
from django_activeurl.ext.django_jinja import ActiveUrl
env = Environment(
extensions=[ActiveUrl]
)
可以省略选项
{% activeurl css_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 时,模板标签内没有内容重建,因此不会影响性能。
项目详情
django-activeurl-0.2.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d2902cfd74e30e5c10c302b8280c849dd23b48ab0b04bab152d2270b904f90ea |
|
MD5 | f309e75ba171cfe95c010cc43b60146c |
|
BLAKE2b-256 | f0d7b027e171ffa712ccebf1e5727d93e26275156f480ecb25fc10f581025e0f |