Django易于使用的活动URL突出显示

django-activeurl的Python项目详细描述


Django易于使用的活动URL突出显示功能

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

功能

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

  1. 使用pip

    安装stable版本
    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
      
    • 软呢帽:

      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时,在模板标记内重建内容,因此 对性能没有影响。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java计时器结束得太早?   java通过行选择编辑jtable内容   java如何将数组的值传递给另一个类?   java对象。hashCode()算法   代号为1且lambda不工作的java Android本机代码   泛型Java方法签名中是否真的需要“?扩展”?   异常处理声纳问题“main”不应“抛出”任何JAVA 7   java无法使用MVEL导入静态方法   java什么是类路径容器?   java从InputStream解码字节   Eclipse重构仅限Java   java使用Qpid通过SSL与AMQP1.0代理通信   java有没有一种方法可以在Oracle中使用带有时区的时间戳作为函数输入   保存文件时运行安卓 lint的java出错   尽管添加了JScrollPane,java JList视图区域仍在增长   java计算第n个浮点   java如何在mysql中插入日期?   GWT中异步回调的java问题