Django框架基础知识05-自定义模板标签与过滤器

根据一定规则,自己定义出符合需求功能的.用在任何你有需求的地方,因为内置的满足不了我们的需求,不同的东西有不同的定义规则

目前最最重要的就是HOW

一 文件路径配置:

templates

存放自定义

某个app特有的自定义标签:存放模板的目录:在app目录下创建一个python package,在其中新建templatetags标签及过滤器的目录

目录结构:

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

模板过滤器的分析:

{{ var|foo:"bar" }} 变量,过滤器,参数

自定义过滤器就是一个带有一个或两个参数的Python 函数:

- (输入的)变量的值 —— 不一定是字符串形式。

- 参数的值 —— 可以有一个初始值,或者完全不要这个参数。

自定义过滤器的例子:

def to_male(value,arg): #自定义返回判断函数,用字典实现的例子    map = {        ‘zh‘:(‘女‘,‘男‘),        ‘en‘:(‘female‘,‘male‘)    }    return map[arg][value]

掌握自定义的规则!!!

注册自定义过滤器:

django.template.Library.filter()

1.Library.filter()方法需要两个参数:

a. name:过滤器的名称(一个字符串对象)

b. filter_func:编译的函数 – 一个Python函数(不要把函数名写成字符串)

2.可以把register.filter()用作装饰器;在register.filter(name=‘‘),可以放参数.

3.没有声明 name 参数,Django将使用函数名作为过滤器的名字。

使用自定义过滤器:

在模板中使用自定义的过滤器

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

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

自定义标签:

简单标签django.template.Library.simple_tag()

包含标签django.template.Library.inclusion_tag()

tag()方法有两个参数:

  1. 模板标记的名称 - 字符串。 如果省略,将使用编译函数的名称。
  2. 编译的函数 – 一个Python函数(不要把函数名写成字符串)

与过滤器注册一样,也可以将其用作装饰器。

自定义简单标签的例子:

代码布局(自定义的代码,放在哪里)

-app目录下,templatetags文件夹.

在simple_tags的参数中设置takes_context=True,就能得到views中的context传参.在自定义标签中的参数第一个一定要写context.例:

def func(context,format_str):

...

包含标签,通过渲染另外一个模板

自定义包含标签的例子:

例子:

@register.inclusion_tag(‘teacher/show_li_as_ul.html‘)def show_list_as_ul(value,style):    return {‘ls‘:value,‘style‘:style}
<td>{% show_list_as_ul stu.course ‘link‘ %}</td>

装饰器中传入的是我们显示数据的模板文件路径

context中以下划线开头的健,属性,方法用点号在模板中拿不到

例:arg = {

‘_meta‘ = ‘adafdakfl‘

}

{{arg._meta}}取不到

想要取值就先把arg传到变量中,在变量里取出_meta,再用这个新变量取值.

函数返回的是个字典对象.

代码布局(自定义的代码,放在哪里)

  1. 某个app特有的 -app 目录下,templatetags 文件夹 -再到 templatetags 文件夹下创建python模块(py文件)
  2. 定义复用 -创建一个新的app,将他们定义在新的app中,在INSTALL_APPS 注册,然后就可以应用

1.自定义模板过滤器 -模板过滤器是什么 -函数,一个或两个参数 - 第一个参数,是传递进来的模板变量 - 第二个参数,普通的参数,也可以是默认,也可以不要 其实就是个函数,没有什么不同 - 定义非常简单,就是写一个函数

-注册    1.    通过django.template.Library 它的实例的 filter 方法    filter 有两个参数:        - name 过滤器的名称,是个字符串,可以不写,默认        使用方法名作为过滤器的名称        - filter_func 定义的过滤器的函数    2.通过装饰器-模板中使用    - 先要load一下,通过python模块名

2.自定义模板标签 - 简单标签 django.template.Library.simple_tag() - 创建 普通的python函数 - 注册 1. 2.装饰器 - 引用上下文变量(views中render传递到模板中的那个context) 只需要在simple_tag 中,设置参数take_context=True 自定义的标签函数的第一个参数一定是 context

- 包含标签

? ?

原文地址:https://www.cnblogs.com/winfun/p/10966512.html

时间: 2024-10-29 16:28:22

Django框架基础知识05-自定义模板标签与过滤器的相关文章

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

1.创建一个模板库 使用模板过滤器的时候,直接把过滤器写在app里,例如:在app里新建一个templatetags的文件夹,这个目录应当和 models.py . views.py 等处于同一层次.例如: books/     __init__.py     models.py     templatetags/     views.py 在 templatetags 中创建两个空文件:一个 __init__.py (告诉Python这是一个包含了Python代码的包)和一个用来存放你自定义的

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

django的模板系统自带了一系列的内建标签和过滤器,一般情况下可以满足你的要求,如果觉得需更精准的模板标签或者过滤器,你可以自己编写模板标签和过滤器,然后使用{% load %}标签使用他们. 代码布局 自定义标签和过滤器必须依赖于一个django app,也就是说,自定义标签和过滤器是绑定app的.该app应该包含一个templatetags目录,这个目录一个和model.py,views.py在同一个层级,记得在该目录下建立一个__init__.py文件一遍django知道这是一个pyth

Django之博客系统:自定义模板标签

Django提供了很多内置的模板标签比如{% if %}或者{% block %}Django也允许你创建自己的模板标签(template tags)来执行自定义的动作.当你需要在你的模板中添加功能而Django模板标签(template tags)的核心设置无法提供此功能的时候,自定义模板标签会非常方便 Django提供了以下帮助函数(functions)来允许你以一种简单的方式创建自己的模板标签(template tags): simple_tag:处理数据并返回一个字符串(string)

windows上Python开发--3.Django的基础知识

最近两天下了班,没事学习了django的开发,今天做个总结.其实大家可以从百度,google搜到一些django的入门视频,初步了解一下django的框架.学习一些基础的概念和知识.本篇主要是对自己这两天做的做个总结. 1.创建第一个views.py 上一篇文章我们在windows上搭建好了django的开发环境并建立一个测试demo. 在settings.py的同级目录下新建views.py目录.并输入以下代码 from django.http import HttpResponse def

(转)ThinkPHP自定义模板标签详解

转之--http://www.thinkphp.cn/topic/6258.html 模板标签让网站前台开发更加快速和简单,这让本该由程序猿才能完成的工作,现在只要稍懂得HTM的人也能轻易做到,这也就是模板标签的强大之处.接触过dedecms或者phpcms等内容管理系统的人都知道,cms的前台都是使用模板标签来调用数据,如列表,内容.来看一个phpcms v9调用数据排行列表的标签: 1 {pc:content action="hits" catid="6" nu

Django框架之第三篇模板语法

Django框架之第三篇模板语法(重要!!!) 一.什么是模板? 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板. 二.模板语法分类 一.模板语法之变量:语法为 {{ }}: 在 Django 模板中遍历复杂数据结构的关键是句点字符  .(也就是点) views.py def index(request): name = "hello haiyan" i = 200 l = [11,22,33,44,55] d = {"name":&quo

PHP面试(二):程序设计、框架基础知识、算法与数据结构、高并发解决方案类

一.程序设计 1.设计功能系统--数据表设计.数据表创建语句.连接数据库的方式.编码能力 二.框架基础知识 1.MVC框架基本原理--原理.常见框架.单一入口的工作原理.模板引擎的理解 2.常见框架的特性--PHP框架的差异和优缺点 三.算法与数据结构 1.常见算法--算法的概念.时间复杂度和空间复杂度.常见排序算法.常见查找算法 2. 3. 4. 四.高并发解决方案 1. 2. 原文地址:https://www.cnblogs.com/darklights/p/9275751.html

Django框架基础

Django基础-Lesson1 web框架概念 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统. 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端.  socket模拟服务端 最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件中读取HTML,返回. 如果要动态生成HTML,就需要把上述步骤自己来实现.不过,接受HTTP

django框架预备知识

内容: 1.web预备知识 2.django介绍 3.web框架的本质及分类 4.django安装与基本设置 1.web预备知识 HTTP协议:https://www.cnblogs.com/wyb666/p/9383077.html 关于web的本质:http://www.cnblogs.com/wyb666/p/9034042.html 如何自定义web框架:http://www.cnblogs.com/wyb666/p/9038644.html 了解cookie和session:https