首页 > 其他 > 详细

Django 学习第五天——自定义过滤器及标签

时间:2019-03-08 19:16:41      阅读:200      评论:0      收藏:0      [点我收藏+]

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

  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

 

Django 学习第五天——自定义过滤器及标签

原文:https://www.cnblogs.com/2018-8-31/p/10497681.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!