Django Template Language 模板语言
一、标签 tags
1、普通变量
- 普通变量用
{{ }} - 变量名由数字、字母、下划线组成
- 点.在模板语言中用来获取对象相应的属性值
- 示例
{# 取variable中的第一个参数 #}
{{ variable.0 }}
{# 取字典dic中key的值 #}
{{ dic.key }}
{# 取obj_list对象列表中第一个对象的attr属性值 #}
{{ obj_list.0.attr }}
{# 点操作只能调用不带参数的方法 #}
{{ obj_list.0.method }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
2、逻辑判断
- 逻辑判断用
{% %} for
- 语法:
{% for item in item_list %}...{% empty %}...{% endfor %} - 作用:循环item_list,如果item值为空或不存在,则会执行empty中的代码,切记要写endfor结束循环
常用for循环参数:
Variable Description forloop.counter当前循环的索引值(从1开始) forloop.counter0当前循环的索引值(从0开始) forloop.revcounter当前循环的倒序索引值(从1开始) forloop.revcounter0当前循环的倒序索引值(从0开始) forloop.first当前循环是不是第一次循环(布尔值) forloop.last当前循环是不是最后一次循环(布尔值) forloop.parentloop本层循环的外层循环
- 语法:
if
- 语法:
{% if some_condition %}...{% elif other_condition %}...{% endif %} - 作用:条件判断,切记要写endif结束条件判断
- 常用与if语句结合的判断关键字
and 、or、==、>、<、!=、<=、>=、in、not in、is、is not
- 语法:
with
- 语法:
{% with new_variable = old_variable %}.....{% endwith %} - 作用:定义中间变量
- 语法:
csrf_token
- 语法:在页面的每个form表单中写上
{% csrf_token %} - 作用:用于跨站请求伪造保护
- 语法:在页面的每个form表单中写上
注释
- 语法:
{# note #}
- 语法:
3、母版系统
继承
- 语法:
{% extends 'base.html' %} - 作用:在子页面中在页面最上方使用下面的语法来继承母板
- 语法:
块 block
- 语法:
{% block block_name %}...{% endblock %} - 作用:在子页面中通过定义母板中的block名来对应替换母板中相应的内容
- 语法:
组件
- 语法:
{% include 'subassembly.html' %} - 作用:可以将常用的固定的HTML内容保存在单独的文件中,在需要的地方用以上语法导入使用
- 语法:
4、静态文件相关
引用静态文件目录
- 语法:
{% load static %} - 作用:通过模板语言引用静态文件夹目录名称
- 示例:
{% load static %}
<img src="{% static 'images/sample.jpg' %}"></img>- 1
- 2
- 语法:
引用静态文件目录
- 语法:{% get_static_prefix %}
- 作用:通过模板语言引用静态文件夹目录名称
- 示例:
{% load static %}
<img src="{% get_static_prefix %}images/sample.jpg"></img>- 1
- 2
5、自定义simpletag
- 作用:可以自定义标签,注册后可使用
自定义simpletag的步骤(与自定义Filter类似,不过接收更灵活的参数)
- 在项目的app中创建名为templatetags的文件夹
- 在templatetags的文件夹中创建自定义的py文件,例如:custom_simpletag.py
custom_simpletag.py中编写自定义simpletag,例如:
from django import template
register = template.Library() @register.simple_tag(name="my_simpletag")
def add_simpletag(a,b,c): # 可接收多个参数
return "{} + {} + {}".format(a, b, c)- 1
- 2
- 3
- 4
- 5
- 6
- 使用自定义simple_tag前,首先在HTML页面中导入py文件
{% load custom_simpletag %}
{% my_simpletag "1" "2" "3" %}- 1
- 2
6、自定义inclusion_tag
- 作用:返回html代码片段
自定义inclusion_tag的步骤
- 在项目的app中创建名为templatetags的文件夹
- 在templatetags的文件夹中创建自定义的py文件,例如:custom_inclusiontag.py
custom_inclusiontag.py中编写自定义inclusiontag,例如:
from django import template
register = template.Library() @register.inclusion_tag('inclusion_tag.html')
def my_inclusiontag(n):
n = 1 if n < 1 else int(n)
data = ["第{}项".format(i) for i in range(1, n+1)]
return {"data": data}- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
在templates文件夹中创建刚才注册的inclusion_tag.html文件
<ul>
{% for choice in data %}
<li>{{ choice }}</li>
{% endfor %}
</ul>- 1
- 2
- 3
- 4
- 5
使用自定义my_inclusiontag前,首先在HTML页面中导入py文件
{% load custom_inclusiontag %}
{% my_inclusiontag 10 %}- 1
- 2
二、过滤器 Filter
1、内置过滤器
语法:
{{ value|filter_name:args }},注意:管道符前后没有空格default
- 语法:
{{ value: default: "自定义内容"}} - 作用:如果value值没传的话就显示自定义内容
- 语法:
length
- 语法:{{ value|length }}
- 作用:返回value的长度
filesizeformat
- 语法:
{{ value|filesizeformat }} - 作用:将value格式化为一个 “人类可读的” 文件大小格式
- 语法:
slice
- 语法:
{{value|slice:"start:end"}} - 作用:切片
- 语法:
date
- 语法:
{{ value|date:"Y-m-d H: i:s"}} - 作用:将时间格式的value进行自定义格式化
- 语法:
safe
- 语法:
{{value|safe}} - 作用:取消Django对HTML标签和JS等语法标签进行自动转义,认为插入的HTML或JS是安全的不必转义
- 语法:
truncatechars
- 语法:{{ value|truncatechars:num}}
- 作用:如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“…”)结尾。num参数是指截断的字符数
2、自定义过滤器 Filter
自定义过滤器的步骤
- 在项目的app中创建名为templatetags的文件夹
- 在templatetags的文件夹中创建自定义的py文件,例如:custom_filter.py
在custom_filter.py中编写自定义过滤器,例如:
from django import template
register = template.Library() @register.filter(name="my_filter")
def my_filter(value, arg): #最多接收两个参数
return value.replace(arg, "")- 1
- 2
- 3
- 4
- 5
- 6
- 使用自定义filter前,首先在HTML页面中导入py文件
{% load custom_filter %}
{{ variable|my_filter:"0" }}- 1
- 2
三、参考链接
官方链接
https://docs.djangoproject.com/en/1.11/ref/templates/language/官方链接-内置标签
https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#built-in-tag-reference官方链接-内置过滤器
https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#built-in-filter-reference其他链接
http://baijiahao.baidu.com/s?id=1578789736945590676&wfr=spider&for=pc
https://code.ziqiangxuetang.com/django/django-template2.html
Django Template Language 模板语言的更多相关文章
- The Django template language 阅读批注
The Django template language About this document This document explains the language syntax of the D ...
- 第三百一十节,Django框架,模板语言
第三百一十节,Django框架,模板语言 模板语言就是可以将动态数据在html模板渲染的语言 一.接收值渲染 locals()函数,写在请求响应render()函数里,可以将逻辑处理函数里的变量传到h ...
- Django框架 之 模板语言
Django框架 之 模板语言 浏览目录 标签 过滤器 一.标签 Tags 1.普通变量 普通变量用{{ }} 变量名由数字.字母.下划线组成 点.在模板语言中用来获取对象相应的属性值 示例: 1 2 ...
- Django补充之模板语言
路由系统 Django页面详情以及分页 举个例子: 有一组后台数据,需要展示到页面上,但由于数据量较大,那就需要做分页了吧,那么怎么才能将页面详情和分页都融合进去呢,Django里的路由系统加上正则表 ...
- 八 Django框架,模板语言
模板语言就是可以将动态数据在html模板渲染的语言 一.接收值渲染 locals()函数,写在请求响应render()函数里,可以将逻辑处理函数里的变量传到html用模板语言渲染 {{...}}接收一 ...
- Django Template(模板系统)
一.Django模板 内置模板标签和过滤器 二.常用操作 两种特殊符号: {{ }} 和 {% %} 变量相关的用: {{ }} 逻辑相关的用: {% %} 2.1 变量 在Django的模 ...
- Python学习笔记整理总结【Django】:模板语言、分页、Cookie、Session
一.模板语言 1.在前段展示:对象/字典/元组 class Business(models.Model): # id #用默认的自增id列 即:Business中有3列数据(id, caption, ...
- [Python自学] day-18 (2) (MTV架构、Django框架、模板语言)
一.实现一个简单的Web服务器 使用Python标准库提供的独立WSGI服务器来实现MVC架构. 首先,实现一个简单的Web服务器: from wsgiref.simple_server import ...
- Django Template(模板)
一.模板组成 组成:HTML代码 + 逻辑控制代码 二.逻辑控制代码的组成 1.变量 语法格式 : {{ name }} # 使用双大括号来引用变量 1.Template和Context对象(不推荐使 ...
随机推荐
- POJ3233_Matrix Power Series_矩阵幂_C++
题目:http://poj.org/problem?id=3233 这是今天考试的题目,结果没想出来写了个暴力30分,看完题解之后觉得自己是SB 首先暴力就是一个个乘然后相加,时间是O(kn3),极限 ...
- D - Doing Homework HDU - 1074 (状压dp)
题目链接:https://cn.vjudge.net/contest/68966#problem/D 具体思路:我们可以把每个情况都枚举出来,然后用递归的形式求出最终的情况. 比如说 我们要求 10 ...
- halcon发布
1: halcon发布 : 在MFC程序中 添加 #include "include/halcon/cpp/HalconCpp.h"using namespace Halcon;# ...
- Servlet笔记6--Servlet程序改进
第一步改进,GenericServlet: 我们目前所有放入Servlet类直接实现了javax.servlet.Servlet接口,但是这个接口中有很多方法是目前不需要的,我们可能只需要编写serv ...
- 网页中嵌入swf文件的几种方法
1. object + embed 传统的方法 优点:浏览器兼容性好,是 Macromedia 一直以来的官方方法缺点:a.embed 标签是不符合 W3C 的规范的,无法通过验证.当然, ...
- MVVM设计模式的事件绑定
为什么要事件绑定 这个问题其实是很好理解的,因为事件是丰富多样的,单纯的命令绑定远不能覆盖所有的事件.例如Button的命令绑定能够解决Click事件的需求,但Button的MouseEnter.窗体 ...
- php 中更简洁的三元运算符 ?:
PHP 三元运算符是对参数赋值时候的一个简洁的主要用法. 一个主要的用法: PHP 三元运算符能够让你在一行代码中描述判定代码, 从而替换掉类似以下的代码: <?php if (isset($v ...
- 虚拟机 CentOS7 64
下载地址:https://www.centos.org/download/ 下载完后以后使用虚拟机安装即可
- linux java配置
1.java配置 配置环境变量在/etc/profile下增加# set Java environmentJAVA_HOME=/usr/share/jdk1.6.0_43PATH=$JAVA_HOME ...
- wpf 在Popup内的TextBox 输入法 不能切换
切换输入法 输入不了中文 [DllImport("User32.dll")] public static extern IntPtr SetFocus(IntPtr hWnd); ...