zoukankan      html  css  js  c++  java
  • django 之创建自己的模板(使用案例)

    Django 创建自己的模板篇(实例)

    此处需要创建模板,主要是对自己的模板进行扩展:

        一般是扩展模板的tag和filter两个功能。可以用来创建你自己的tag和filter功能库。

    创建模板库

    分为两步:
    1. 首先决定由模板库在哪一个注册的app下放置,你可以放在一个已有的app目录下,也可以新建一个
    专门管理模板库的app,比如python manage.py startapp myTemplateLibrary。推荐后者,
    因为可以方便将来的重用。
     
    2. 在app目录下创建templatetags子目录,并在里面创建两个文件,__init__.py,用来声明这是一个
    包,另一个是你的tag/filter定义文件。比如myNewLibrary.py,那么在模板文件中可以这样使用:
    {% load myNewLibrary %}
     
    {% load %}只允许导入注册app目录下的模板库。这样做是为了保证你的模板库可以不被其它Django
    程序使用。
     

    实现自定义过滤器

    1. 创建register变量
    在你的模块文件中,你必须首先创建一个全局register变量,它是用来注册你自定义标签和过滤器的,
    你需要在你的python文件的开始处,插入几下代码:
    from django import template
    register = template.Library()
    2. 定义过滤器函数
    自定义的过滤器就是一个带1,2个参数的python函数,一个参数放变量值,一个用来放选项值。
    比如{{ var|remove:"bar" }}, var是变量值,"bar"是选项值,remove过滤器可以定义为:
    def remove(var, arg):
        # 移除字符串中var的arg字串
        return var.replace(arg, '')
    过滤器函数应该总是返回一些信息,即使出错,也不应该抛出异常,可以返回默认值或者空字符串。
    不带参数的过滤器也很常见:
    def lower(value):
        "Converts a string into all lowercase"
        return value.lower()
    3. 注册过滤器函数
    # 第一个参数是在模板中使用的过滤器的名字
    # 第二个就是你的过滤器函数引用名
    register.filter('remove', remove)
    register.filter('lower', lower)

    python2.7以上版本,可以使用装饰符(decorator)功能

    @register.filter(name='remove')
    def remove(value, arg):
        return value.replace(arg, '')
    @register.filter
    def lower(value):
        return value.lower()
    如果装饰符不加name,则默认使用函数名来当作使用名。
    下面是完整代码:
    from django import template
    register = template.Library()
    @register.filter(name='remove')
    def remove(value, arg):
        return value.replace(arg, '')
    @register.filter
    def lower(value):
        return value.lower()
  • 相关阅读:
    分数拆分
    thinkphp URL规则、URL伪静态、URL路由、URL重写、URL生成(十五)
    iOS_12_tableViewCell的删除更新_红楼梦
    关于0基础磁盘管理(gpt UEFI...)最好的一篇文章(来自gentoo linux)
    HDU 3564 Another LIS splay(水
    jsp表达式
    XML(四)dom4j解析XML
    Android学习笔记(十八)——使用意图筛选器和实现浏览网页(附源代码)
    Oracle企业管理框架
    em grid control网格控制
  • 原文地址:https://www.cnblogs.com/haishiniu123/p/7086093.html
Copyright © 2011-2022 走看看