zoukankan      html  css  js  c++  java
  • Django 学习第五天——自定义过滤器及标签

    代码布局:(自定义的代码放在哪?)

      1、创建某个 app 特有的:

        在 app 目录下,创建 templatetags python包(文件夹);

        再到 templatetags 文件夹下创建python模块(文件)

        注意:templatetags 这个名字固定的,里面的模块名是自定义的

      2、创建复用(公用)的:

        创建一个新的app,将他们定义在新的app中,在主目录的setting.py文件里的 INSTALL_APPS 注册,然后就可以应用

     

    一、自定义模板过滤器

      创建:

        模板过滤器就是一个函数:

        一般有一个或或两个参数

          第一个参数,一般是传递进来的模板变量;

          第二个参数,普通的参数,也可以十默认,也可以不要;

        定义就是写一个函数

      注册:

        1、通过 django.template.Library 它的实例(一定要是:register)的 filter 方法

        filter 有两个参数:

          1)、name:过滤器的名称,是个字符串,可以不写,默认使用方法名作为过滤器的名称;

          2)、filter_func: 定义的过滤器的函数(函数对象);注意不要把函数名写成字符串

    register.filter('别名',自定义的函数名)

        2、通过装饰器:

    @register.filter #这里可以传入 @register.filter(name='newname') 取别名

        使用:

          需要使用{% load %}标签将我们的自定义模块加载进来

          {% load %} 声明将会载入给定模块名中的标签/过滤器

    二、自定义模板标签:

      自定义简单标签:

        创建:

          就是一个普通的python函数

        注册:

          1、通过 django.template.Library 它的实例(一定要是:register)的 simple_tag 方法

            simple_tag 有两个参数:

              1)、name:过滤器的名称,是个字符串,可以不写,默认使用方法名作为过滤器的名称;

              2)、filter_func: 定义的过滤器的函数,(函数对象)

    register.simple_tag(name='别名',自定义的函数名)

      2、通过装饰器:

    @register.simple_tag #这里也可以传入 @register.simple_tag(name='newname') 取别名

        

        使用:

          需要使用{% load %}标签将我们的自定义模块加载进来

          {% load %} 声明将会载入给定模块名中的标签/过滤器

      引用上下文变量:(views 中render传递到模板中的那个 context)

        只需要在 simple_tag 中设置 take_context=True

        自定义标签函数的第一个参数一定是 context

     

      包含标签:(inclusion tags)

        通过渲染另一个模板来展示数据

      定义:

        定义一个函数,接收调用时传递的模板变量

        定义一个模板,供这个函数使用

      注册:

        1、通过 django.template.Library 它的实例(一定要是:register)的 inclusion_tag 方法

          inclusion_tag 有两个参数:

            1)、name:过滤器的名称,是个字符串,可以不写,默认使用方法名作为过滤器的名称;

            2)、filter_func: 定义的过滤器的函数,(函数对象)

    register.inclusion_tag(自定义的函数名) #传入定义的那个供函数使用的模板

        2、通过装饰器:

    @register.inclusion_tag('自定义的那个模板文件')

        使用:

          需要使用{% load %}标签将我们的自定义模块加载进来

          {% load %} 声明将会载入给定模块名中的标签/过滤器

      引用上下文变量:(views 中render传递到模板中的那个 context)

        只需要在 inclusion_tag 中设置 take_context=True

        自定义标签函数的第一个参数一定是 context

  • 相关阅读:
    Java注解入门
    两种求素数
    几个经典的递归小程序
    Java8新特性——接口的默认方法和类方法
    SSH框架总结
    初识SSH框架
    Mybatis中DAO层接口没有写实现类,Mapper中的方法和DAO接口方法是怎么绑定到一起的
    使用SQL查询所有数据库名和表名
    mybatis中#{}和${}的区别
    SOCKET, TCP/UDP, HTTP, FTP 浅析
  • 原文地址:https://www.cnblogs.com/2018-8-31/p/10497681.html
Copyright © 2011-2022 走看看