跳转到主要内容

Django的易于使用的活动URL高亮显示

项目描述

Django的易于使用的活动URL高亮显示

https://img.shields.io/travis/hellysmile/django-activeurl.svg https://img.shields.io/codecov/c/github/hellysmile/django-activeurl.svg https://img.shields.io/pypi/v/django_activeurl.svg

功能

  • 通过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+。

  1. 使用 pip 安装 稳定 版本

    pip install django-activeurl

    或使用 pip 安装 开发 版本

    pip install -e git+git://github.com/hellysmile/django-activeurl#egg=django_activeurl
  2. 在您的 settings.py 中添加以下内容

    INSTALLED_APPS = (
        ...
        'django_activeurl',
        ...
    )
    
    TEMPLATE_CONTEXT_PROCESSORS = (
        ...
        'django.core.context_processors.request',
        ...
    )
  3. 需要 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 (16.7 kB 查看哈希值)

上传时间

由以下支持