django-DIL模板自定义过滤器,自定义标签,自定义包含标签
  • 自定义过滤器

    • DTL模板语言生来只是为了方便的展示信息,所以与编程语言相比显得有点薄弱,有时候不能满足我们的需求。因此django提供了一个接口,让开发者能自定义标签和过滤器。
    • 首先,你需要添加一个templatetags的文件夹, 自定义过滤器必须处在已经安装了的app中的一个名叫”templatetags”的包(文件夹)中。因此可以有两种选择:
      • 一种是放在其他已经安装了的app中。这种方式简单,但不方便管理。
      • 单独创建一个app,用来存放所有的自己定义的过滤器。 推荐使用
    • ps: templatetags 文件夹名字不能修改,这是django固定死的

1.使用上述第二种创建公用的app utils       ------      工具,在utils app下创建templatetags包固定名称,  ps:不要丢失 __init__.py  否则模板中加载不到

在templatetags下创建xxx.py文件,编写过滤器

2.py文件中   utils.templatetags.xxx.py

# coding=utf-8
from django import template# 代表该文件是自定义标签名 register固定写法
register = template.Library()# html模板中调用{{ msg|myCut:'args' }}  需要导入该py文件   {% load py_file_name %}
@register.filter  # 过滤器装饰器
def myCut(value, args):# 根据需求编写代码return u'自定义过滤器某些字符返回小写: %s' % (value.replace(args, '').lower())  # python2默认ascill码 u'中文'  unicode, pyhon3默认unicode

3.***需要在settings文件中导入该app  utils

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','utils', # 创建自定义过滤器需要引入该app
]

 自定义标签:

引用上述第二步pyfile:

@register.simple_tag
def current_time(time_geshi):  #html模板中调用 {% current_time '%Y-%m-%d %}return datetime.now().strftime(time_geshi)

自定义包含标签

应用场景:重复出现在html页面中的动态数据,而其他页面需要include 这个页面,会引用一次,需要在view中传值一次。

而将数据定义在包含标签,通过装饰器@register.inclusion_tag("my_menu11.html") 指定一个页面接收该数据,其他所有页面都可以通过 定义的{% my_menu %}去调用,类似 {% include "my_menu11.html"%}的效果.    ps需要先加载该包含标签Py文件 {% load pyfilename %}

引用上述第二步pyfile:

@register.inclusion_tag("my_menu.html") #将返回值传给my_menu.html渲染 在将my_menu11.html引用给目标html。  ps:在目标html中使用 {% my_menu %}引用
def my_menu():   # 不加参数                   # 类似在目标html使用{% include my_menu.html %}menu = {'a', 11, 'name': 'xiaom', 'age': 18}return {'menu': menu}

my_menu11.html

{% for m,v in menu.items %}{{ m }}: {{ v }}
{% endfor %}

渲染的目标html中使用 {% my_menu %}引用

{% load custom %}    加载自定义包含标签py文件
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>* {margin: 0;padding: 0;}</style>
</head>
<body>
自定义包含标签<br>{% my_menu %}<br>
</body>
</html>

posted on 2018-05-08 12:50 .Tang 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/tangpg/p/9007572.html

django-DIL模板自定义过滤器,自定义标签,自定义包含标签相关推荐

  1. 潭州课堂25班:Ph201805201 django框架 第五课 自定义简单标签,包含标签,模型类创建,梳理类创建 (课堂笔记)...

    自定义标签同自定义过渡器一样,要创建文件,在配置文件中以APP方法注册,对方法进注册,在 html 文件中引入,.. 由模板传参 在 在配置文件中改时区: 由视图函数传参 包含标签: 当有这种重复的代 ...

  2. django的模板系统过滤器笔记

    -------------------django内建的过滤器------------------- 1.add  使用形式为:{{ value | add: "2"}} 意义:将 ...

  3. django “如何”系列4:如何编写自定义模板标签和过滤器

    django的模板系统自带了一系列的内建标签和过滤器,一般情况下可以满足你的要求,如果觉得需更精准的模板标签或者过滤器,你可以自己编写模板标签和过滤器,然后使用{% load %}标签使用他们. 代码 ...

  4. (5)完整的Django框架学习之自定义过滤器及标签

    新建文件 1.自定义过滤器 2.自定义标签 3.包含标签

  5. Vue中使用自定义过滤器转换Unix时间戳

    从后台得到的json数据中使用了unix格式的时间戳,前台使用vue展示的时候可以用过滤器对模板中的标签进行处理,很是方便,实现过程: 1.注册自定义过滤器 <script>//注册自定义 ...

  6. Web框架——Flask系列之自定义过滤器详解(五)

    一.为什么要自定义过滤器 过滤器的本质是函数.当模板内置的过滤器不能满足需求,可以自定义过滤器. 二.自定义过滤器两种方式 方式一 先定义函数 后添加到过滤器列表,app.add_template_f ...

  7. django自定义过滤器及模板标签

    django自定义过滤器及模板标签 文件路径配置: 某个app特有的 -app 目录下,新建templatetags 文件夹 -再到 templatetags 文件夹下创建python模块(py文件) ...

  8. 20190325 Django自定义过滤器和自定义模板标签

    代码布局(死去活来) 自定义要先解决几个问题: 1). 在哪里定义,要将代码写在哪里? app目录下的名为templatetags的文件夹,必须叫这个名字.这个文件夹必须是一个python的包(pyt ...

  9. django之:网页伪静态 JsonResponse form表单携带文件数据 CBV源码分析 模板语法传值 模板语法之过滤器 标签 自定义标签函数 过滤器、inclusion_tag模板的继承导入

    目录标题 一:网页伪静态 1.定义 2.如何实现 二:视图层 1.视图函数返回值问题 2.视图层返回json格式的数据 3.form表单携带文件数据 4.CBV源码分析 1.CBV和FBV: 2.CB ...

  10. Django 框架13: 自定义过滤器和标签

    2019独角兽企业重金招聘Python工程师标准>>> Django的模板系统自带了一系列的内建标签和过滤器,一般情况下可以满足开发要求,如果觉得需更精准的模板标签或者过滤器,可以自 ...

最新文章

  1. 安装vmware esx4.1
  2. IIS 上传文件大小配置步骤(默认200K)
  3. 关于多层html标签嵌套引起CSS冲突问题的解决。
  4. cx_Oracle怎么打包,cx_Oracle 在执行包文件 function 时有多个出参该如何获取
  5. 面试高频题:springboot自动装配的原理你能说出来吗?
  6. matlab绘画固定方程的曲线图
  7. 纯css3制作的几个社交媒体网站的图标
  8. jupyter notebook 使用pip安装库,解决报错:zsh:1: command not found: pip
  9. 1.RABBITMQ 入门 - WINDOWS - 获取,安装,配置
  10. js在以div添加滚动条
  11. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 大型软件系统客户端数据同步的问题解决...
  12. 无稽之谈--关于我自己的程序世界
  13. 正则表达式(以校验qq是否合法等为例)
  14. 【简单算法】计算几月几日是一年的第几天
  15. 一款功能强大的Web接口和网页测试工具
  16. 【方法】科大讯飞在线语音合成API使用-文字转语音音频
  17. 腾讯地图实现地图找房功能
  18. The REBOL Scripting Language 读后感
  19. Oracle COALESCE函数
  20. 莆田python培训

热门文章

  1. Big Faceless:PDF Viewer for JAVA Crack
  2. English Learning - L1-1 站在高处建立灵魂 2022.12.5 周一
  3. Modbus 超时时间设置
  4. 中秋节活动中奖名单公布啦!!
  5. RNN模型构建人名分类器
  6. 20. Python的字典嵌套
  7. ACP相比AWS哪个更具有优势
  8. Hadoop Streaming 实战: 实用Partitioner类KeyFieldBasedPartitioner
  9. 简单明了实现vue兼容到ie
  10. 9*9的数独(dfs)