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

  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 学习第五天——自定义过滤器及标签的更多相关文章

  1. 小白学习django第三站-自定义过滤器及标签

    要使用自定义过滤器和标签,首先要设置好目录结构 现在项目目录下建立common的python包 再将common加入到setting.py中的INSTALLED_APP列表中 在common创建目录t ...

  2. Django学习——Django settings 源码、模板语法之传值、模板语法之获取值、模板语法之过滤器、模板语法之标签、自定义过滤器、标签、inclusion_tag、模板的导入、模板的继承

    Django settings 源码 """ 1.django其实有两个配置文件 一个是暴露给用户可以自定义的配置文件 项目根目录下的settings.py 一个是项目默 ...

  3. 一、变量.二、过滤器(filter).三、标签(tag).四、条件分支tag.五、迭代器tag.六、自定义过滤器与标签.七、全系统过滤器(了解)

    一.变量 ''' 1.视图函数可以通过两种方式将变量传递给模板页面 -- render(request, 'test_page.html', {'变量key1': '变量值1', ..., '变量ke ...

  4. django自定义过滤器和标签

    1.自定义过滤器和标签的流程: 1.在某个app下创建一个名为templatetags(必需,且包名不可变)的包.假设我们在名为app01的app下创建了一个templatetags的包,并在该包下创 ...

  5. Django入门--自定义过滤器与标签

    ---恢复内容开始--- 为了让Django找到自定义的模板过滤器和模板标签,需要进行文件路径配置,配置方式分为APP目录下配置和项目路径下配置两种方式: 1.在APP目录下配置:针对某个应用特定的自 ...

  6. Web框架之Django_04 模板层了解(过滤器、标签、自定义过滤器、标签、inclusion_tag、模板的继承与导入)

    摘要: 模版层(模板语法) 模板语法 过滤器 标签 自定义过滤器.标签 inclusion_tag 模板的继承 模板的导入 一.模板语法: 常用语法:{{     }}    变量相关{% %}    ...

  7. 自定义过滤器和标签 & 静态文件相关

    自定义过滤器和标签 1.在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. 2.在app中创建templatetags模块(模块名 ...

  8. Django自定义过滤器及标签

    一.自定义过滤器 1.自定义过滤器文件存放位置 在APP应用下创建名为templatetags(该文件夹名固定)的文件包(包含__init__.py文件) 注意APP必须在setting中注册 即在s ...

  9. Django之模板层-自定义过滤器以及标签

    自定义标签与过滤器 在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. 在app中创建templatetags模块(模块名只能是t ...

随机推荐

  1. 关于ios进入后台界面后 播放声音解决方案

    1 最近我在做环信视频通话时,遇到了一个新功能就是APP在后台的时候能对方能视频或者音频过来的时候 能够播放声音 根据查询相关资料得到如下解决办法 NSError *error; AVAudioSes ...

  2. mysql老是停止运行该怎么解决

    你可能还会遇到无法启动mysql的错误 解决方法如下:

  3. Max Sum (dp)

    Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. F ...

  4. hdu4990 转移矩阵

    找了半天错发现m有可能是1.. /* 如果n是奇数,就进行(n/2)次转移,然后取F[2],反之取F[1] */ #include<bits/stdc++.h> using namespa ...

  5. Nginx详解十八:Nginx深度学习篇之Rewrite规则

    Rewrite规则可以实现对url的重写,以及重定向 作用场景: 1.URL访问跳转,支持开发设计,如页面跳转,兼容性支持,展示效果等 2.SEO优化 3.维护:后台维护.流量转发等 4.安全 配置语 ...

  6. AI-响应式、分页器

    响应式 如果在setting配置下列,当只有BrowsableAPIRenderer时,只会返回浏览器页面:当配置成JSONRenderer,会返回json数据 REST_FRAMEWORK={ 'D ...

  7. 卸载列表信息——Uninstall注册表

    今天用InstallShield打包了一个安装程序,安装顺利完成了,但是当我去控制面板准备卸载时,发现我的程序没有详细的信息,正常的软件信息如下图: 而我的程序没有发布者,大小和版本,也没有图标,于是 ...

  8. 步步为营-77-Ajax简介

    AJax:异步JavaScript和XML.Asynchronous JavaScript and XML 优点:无刷新 1 JavaScript下的Ajax 1.1 XMLHttpRequest对象 ...

  9. Just oj 2018 C语言程序设计竞赛(高级组)H: CBT?

    H: CBT? 时间限制: 1 s      内存限制: 128 MB      提交 我的状态 题目描述 对于二叉树,如果这棵树的节点排布是按行从上到下,每行从左到右挨个放置,中间不会有空闲的节点. ...

  10. 从0开始简单使用git进行项目开发【SourceTree+Coding.net】

    一.什么是git? 含义:Git 是 Linux 发明者 Linus 开发的一款新时代的版本控制系统,相比于原来的svn系统更加简单和实用 作用: 熟悉编程的知道,我们在软件开发中源代码其实是最重要的 ...