1 模板引入子html--include

 模板引擎
- 母版 - include,导入公共的html
a. 用法:{% include "pub.html" %}, pub.html还可以添加 {{ name }}
b. 一个页面可以导入多次,一个html只能有一个母版
c.样例
# public.html
<div class="public">
<div class="content">
{{ userinfo }}
</div>
</div> # app02_test.html
<h3>include</h3>
{% include "public.html" %}
{% include "public.html" %} # views
def test(request):
return render(request, 'app02_test.html', {'userinfo':{'k1':'v1', 'k2': 'v2'}})

2 模板使用(渲染数据 + 调用函数)

- 模板
- 接收被渲染数据
views参数传递:{'userInfo': {'k1': 'v1', 'k2':'v2'}}
前端接收可以
{% for v in userInfo.values %}
{% endfor %}
或者
{% for k,v in userInfo.items %}
{% endfor %}
或者
{% for k in userInfo.keys %}
{% endfor %} - 模板执行函数, 而且函数不是js函数,而是py里面的函数
a.{{ name|upper}} // name是后台传递给前端的带渲染数据,upper是转换大写函数

3 自定义函数,供模板调用

- 自定义模板filter
a.在应用创建文件夹templatetags
b.创建任意py文件, xx.py
from django import template
register = template.Library() @register.filter
def my_upper(value):
return value.upper()
c.在模板文件导入xx.py
开头导入 {% load xx %} d.在模板使用函数
{{ 'liuzhipeng'|my_upper}} ,前面的liuzhipeng为参数传递给my_upper e. 一定要注册app_02 - 自定义tag
a.在应用创建文件夹templatetags
b.创建任意py文件, xx.py
from django import template
register = template.Library() @register.simple_tag
def my_concat(arg1, arg2):
return arg1 + arg2
c.在模板文件导入xx.py
开头导入 {% load xx %} d.在模板使用函数tag
{% my_concat "alex" "is sb" %} e. 一定要注册app_02 - filter 和simple_tag区别
a. filter最多能有两个参数
b. filter模板调用方式: {{ 参数|函数}}
c. simple_tag参数个数无限制
d. simple_tag使用方式:{% 函数 参数 参数 %}
e. {% if name|my_bool %} 可以这样使用filter,而tag则不能
f. simple_tag反向生成url
{% url 'url别名' %}
g. 可以{% if name|my_bool %}, 但是simple_tag不行

[oldboy-django][2深入django]django模板使用函数的更多相关文章

  1. Django(4)html模板继承、模板导入、分页实现

    1.获取所有请求信息 导入模块:from django.core.handlers.wsgi import WSGIRequest request.environ:包含所有的请求信息,可以打印看一下, ...

  2. Django基础,Day10 - template 模板引擎与路径设置

    作为一个Web框架,Django需要一个方便的方式来生成动态的HTML.最常见的方法依赖于模板.模板包含所需的HTML输出的静态部分以及一些特殊的语法描述如何插入动态内容. Django框架后端默认支 ...

  3. Day18 Django之路由系统、模板语言、Ajax、Model

    一.路由系统 1.创建Django项目 django-admin startproject day18 cd day18 python3 manage.py startapp app01 2.app0 ...

  4. django第二个项目--使用模板

    第一步: 创建新项目secondproject cd /tmp/django-admin startproject secondeproject 第二步: 创建一个用于放置模板文件夹 cd /tmp/ ...

  5. [Django 1.5] jQuery/Ajax 在Django使用 ,如何更新模板里里变量

    最近希望实现一个页面局部刷新的功能,于是开始查阅ajax资料.幸好现在ajax很多功能都封装在jQuery这个库里面,我们可以很方便去调用.通过学习几个简单的小例子,可以实现简单的前端代码更新,还有重 ...

  6. django在视图中使用模板

    在视图中使用模板   在学习了模板系统的基础之后,现在让我们使用相关知识来创建视图. 重新打开我们在前一章在 mysite.views 中创建的 current_datetime 视图. 以下是其内容 ...

  7. Django将request对象传入模板配置

    对于很多时候,需要从模板中获取很请求中很多内容,比如当前请求的url,当前的session变量中的某个值,这时候我们可以通过配置可将request对象传递进模板. django1.10版本: sett ...

  8. Django中的可复用模板

    将文件转换成可复用的模板,便可以通过模板的基本布局来设计未来项目. startproject的模板是一个目录或zip文件,当命令运行时形成Django模板. 默认情况下,所有Python源文件都会被制 ...

  9. Django 学习第三天——模板变量及模板过滤器

    一.模板路径的查找: 查找顺序:(现在哪找到就用那个) 首先在主目录的 setting.py 文件里的 TEMPLATES 中的 DIRS 里找: 其次如果 DIRS 中的 APP_DIRS : 'T ...

  10. python 全栈开发,Day69(Django的视图层,Django的模板层)

    昨日内容回顾 相关命令: 1 创建项目 django-admin startproject 项目名称 2 创建应用 python manage.py startapp app名称 3 启动项目 pyt ...

随机推荐

  1. lattice diamond fpga 状态机的理解

    比如序列检测101,需要三个状态 :so,s1,s2. 思路:(1)s0状态有两种情况0或1,若为0时在自身打圈,是1时进入s1状态. (2)s1状态有两种0或1,若为1自身打圈,因为1可以作为下次检 ...

  2. Python开发第二篇

    运算符 1.算术运算符 % 取余运算符,返回余数 ** 幂运算符 //返回商的整数部分 2.逻辑运算符 and  与运算符 a and b 如果a为False是,表达式为False,如果a为True返 ...

  3. NYOJ-22-素数求和问题

    原题地址 素数求和问题 描述 现在给你N个数(0<N<1000),现在要求你写出一个程序,找出这N个数中的所有素数,并求和. 输入 第一行给出整数M(0<M<10)代表多少组测 ...

  4. 实现带查询功能的ComboBox控件

    实现效果: 知识运用: ComboBox控件的AutoCompleteMode属性 public AutoCompleteMode AutoCompleteMode{get;set;} //属性值为枚 ...

  5. 2017.12.25 Linux系统的使用

    Linux系统的使用 现在标配的系统是 Linux + Nginx + PHP + MySQL ,这样的配置越来越多的大公司在用的了说到配置不同的是一个公司的规约,比如说挂载一般分为2个盘, / 下面 ...

  6. 题解 P1137 【旅行计划】

    传送门 很显然,每个点的答案是它所有前驱节点的答案加1,即f[i]=max(f[i],f[j]+1); 考虑空间复杂度用邻接表存图,在拓扑排序同时DP就好了 #include<iostream& ...

  7. Java传值分析

    public class Example{String str=new String("good");char[] ch={'a','b','c'};public static v ...

  8. 100个linux系统常用指令

    1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件-A 通-a,但不列出"."和".."-l 列出文件 ...

  9. webpack+thymeleaf实现数据直出

    webpack动态插入thymeleaf模板,MVC将要使用数据传递到模板中渲染,得到的html就已经带有要初始显示的数据了github:https://github.com/947133297/we ...

  10. LeetCode#453 最小移动次数使数组元素相等

    给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数.每次移动可以使 n - 1 个元素增加 1. 示例: 输入: [,,] 输出: 解释: 只需要3次移动(注意每次移动会增加两个 ...