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. GIT教程笔记

    GIT的工作流程: 先在工作目录中添加.修改文件 一般是在工作目录建立你的工程文件夹,然后通过命令行进入文件夹后  git init 初始化 将需要进行版本管理的文件放入缓存区  git add 文件 ...

  2. POJ-2135 Farm Tour---最小费用最大流模板题(构图)

    题目链接: https://vjudge.net/problem/POJ-2135 题目大意: 主人公要从1号走到第N号点,再重N号点走回1号点,同时每条路只能走一次. 这是一个无向图.输入数据第一行 ...

  3. linux 硬链接与软链接的区别

      硬链接的特点:不添加新文件 不能跨区建立 不能对目录建立 删除源文件硬链接正常访问   ln 源文件 目标链接文件   软连接的特点:会添加新文件 可以跨区建立 可以对目录建立 删除源文件软连接不 ...

  4. 分布式版本控制系统git

    最近看到这篇文章,简洁易懂,特摘抄至https://www.cnblogs.com/bgwhite/p/9403233.html 供大家提供参考. git可以说是世界上最先进的版本控制系统,大多语句的 ...

  5. 解决session过期跳转到登录页并跳出iframe框架(或者layui弹出层)

    当用户长时间停留在管理界面没有操作,等到session过期后,进行了操作,那么只是iframe跳转到login页面,这不是我们想要的结果.解决方法:在login页面加一个逻辑判断: <scrip ...

  6. C语言正整数除法向上取整

    在网上发现一个简单的向上取整方法: 这里我们用<>表示向上取整,[]表示向下取整,那么怎么来表示这个值呢? 我们可以证明: <N/M>=[(N-1)/M]+1    (0< ...

  7. Oracle 数字处理函数

    数字处理函数 ① mod(number1,number2) 取余数的函数,比如mod(10,3) = 10/3 = 1. ② round(number,num_ditigs) .trunk(numbe ...

  8. Java程序调用自动关机指令 1分钟内自动关机

    package com.swift;//可以不要这句 import java.io.IOException; public class Shutdown100 { public static void ...

  9. servlet从服务器磁盘文件读出到浏览器显示,中文乱码问题,不要忘记在输入流和输出流都要设置编码格式,否则一个地方没设置不统一就会各种乱码

    package com.swift; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOE ...

  10. JQuery模拟点击页面上的所有a标签,触发onclick事件

    注意: 这种方法需要给所有的a标签加上id属性 页面加载完成模拟点击所有的a标签: <script> $(function () { // 模拟点击页面上的所有a标签,触发onclick事 ...