Django模板(filter过滤器{{ }}与tag标签{% %}应用)
模板里面过滤器与标签的应用
templates模板里面的应用参考(主要应用在这里面)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>自定义过滤器、标签验证</title>
</head>
<body>
<h1>自定义双大括号过滤器(让两个字符相加)</h1>
<!--指定加载我自定义py文件的名字-->
{% load my_filter %}
{{ 'yzz'|tt:'good'}} <hr>
<h2>自定义标签(求和)</h2>
{% load my_filter %}
{% yy 12 13 14 15 %} {# 过滤器的应用#}
<hr>
<p>字符串名字:{{ name }}</p>
<p>数字年龄:{{ age }}</p>
<p>列表名字:{{ name_list }}</p>
<p>查找列表中的第一个名字:{{ name_list.0 }}</p>
<p>时间:{{ now }}</p>
<p>时间:{{ now|date}}</p>
<!--下面这种注释方法,在后台也看不到-->
{# <!--在views视图里面没有处理好,也可以在模板里面做过滤处理,date是个方法名-->#}
<p>时间:{{ now|date:'Y-m-d:H:i:s'}}</p>
{# default空列表给其默认值#}
{# <p>default:{{ empty_list }}</p>#}
<p>default:{{ empty_list|default:'给空列表传值' }}</p>
<p>default:{{ empty_dic|default:'给空字典传值' }}</p>
{# 计算长度#} <p>列表长度:{{ name_list|length }}</p> #3
<p>字典长度:{{ name_dic|length }}</p>
{#filesizefromat将数字计算的计算转个响应的大小例如bytes kb mb等#}
<p>计算文件大小:{{ file|filesizeformat }}</p> {#slice切片操作,顾头不顾尾#}
<p>slice切片:{{ name|slice:'1:3' }}</p> #结果为li {#如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾#}
<p>字符的截断...:{{ str_str|truncatechars:6 }}</p> #结果为lib...(6:字符+...共6位)
<p>单词的截断(以空格截断)...:{{ str_str2|truncatewords:3 }}</p> # 这里的数字就是单单显示几个单词 libai love lisi ... {# safe控制是否转义和不转义(就是跨站脚本攻击)#}
<p>默认是a对字符串"<a href="https://www.baidu.com">点击</a>":{{ ss3 }}</p>
<p>safe不让其转译,会正常在页面显示a的链接:{{ ss3|safe }}</p> {#add做加号#}
<p>add做加号:{{add_num|add:'3' }}</p>
<p>add做加号2:{{add_num|add:3 }}</p>
{# <p>add做加号2:{{add_num|add:'aaa' }}</p>如果是数字和字符就会输出空#} {# 标签的应用 #}
<h3>便签的应用</h3> {% for li in name_list %} <p>{{ li }}</p> {% endfor %}
<hr>
{#foorloop可以一次循环出所有的元素,并且每个元素并且每个元素也都有参数#}
{% for foo in name_list %}
<p>{{ forloop }}</p>
<p>{{ forloop.counter }}</p>
<p>{{ forloop.first }}</p>
<p>{{ forloop.last }}</p>
{% if forloop.first %}
第一个
{% elif forloop.last %}
最后一个
{% else %}
中间一个
{% endif %}
{% endfor %}
<hr>
{#empty 对于for循环的对象是个控制,默认可以用这个给于设置默认提示#}
{% for foo in empty_list %}
{{ foo}}
{% empty %}
这个列表是空值,empty做提示必须放在for循环中
{% endfor %}
<hr> {#forloop.parentloop 列表套列表的情况#}
{% for foo in li %}
{{ foo }}
<hr>
{{ forloop }}
<hr>
{% for i in foo %}
{{ i }}
<hr>
{{ forloop }}
{{ forloop.parentloop }} #子列表的父类表
{% endfor %} {% endfor %}
<br>
{# with方法取值:作用就是如果后面只比较长的时候可以明个名字,通过中间名调用取值#}
{% with n=name_dic.age %}
<P>with字典正常查值:{{ name_dic.age }}</P>
<p>with方法查询字典值:{{ n }}</p>
{% endwith %} {# with ...as 方法取值#}
{% with name_dic.name as aa %}
<P>with as方法查询取值: {{ aa }}</P>
{% endwith %} {# for循环取字典value的值#} {% for key in name_dic.keys %}
<P>字典的key值:{{ key }}</P> {% endfor %} {% for value in name_dic.values %}
<p>字典的value值:{{ value }}</p>
{% endfor %} {% for key,value in name_dic.items %}
<p>字典的value值:{{ key }}--- {{ value }}</p>
{% endfor %}
</body> </html>
views响应视图里面的配套设置(辅助模板的运行)
from django.shortcuts import render,HttpResponse # Create your views here.
class Person:
def __init__(self,name):
self.name=name
@classmethod
def calss_test(cls):
print('Person_class method')
render('class method')
def test(self):
print('method')
return self.name def index(request):
name='zhangsanaaaaaaaaaaaaaa'
age=23
name_list=['zhangsan','lisi','wangwu']
name_dic={'name':'yangzhizong','age':23}
import datetime
now = datetime.datetime.now()
empty_list=[]
empty_dic={''}
file=1024
str_str='libailovelisi'
str_str2='libai love lisi zhangsan love who '
ss3='<a href="https://www.baidu.com">点击</a>'
add_num=12
li=[[1,2,3],[4,5,6],[7,8,9]] #将上面定义的逐一渲染到页面
# return render(request,'index.html',{'name':name,'age':age,'name_list':name_list})
#对模板里已经调用的会一次性从上面拿到渲染进模板
return render(request,'index.html',locals())
自定义过滤器{{ }}:
例如:自定义一个过滤器方法,完成2个字符串拼接
1.settings.py里面确认是否将自己的app文件夹添加到
INSTALLED_APPS =[ ]
2.在app目录下面创建一个templatetags文件夹(名字固定)
3.在第二步创建的文件夹下面自己写一个py文件,名字可以自己定义:例如my_filter
4.导入from django import template 模块
5.做一个注册:register = template.Library()
6.写函数addrstr( 并且用register.filter() 进行装饰)
7.写html模板
{% load my_filter %} 指定你定义的过滤器方法名
{{ 'lqz'|tt:'isbig' }} 传2个字符串完成拼接(最多只能拼接2个字符串) 重要备份的配置信息及截图:
from django import template #做一个注册
register = template.Library() #写函数并且用@register.filter给自定义函数做装饰(tt就是重命名我的过滤器方便在html里面调用)
@register.filter(name='tt')
def addrstr(x,y):
return x+y
my_filter.py
from django import template #做一个注册
register = template.Library() #写函数并且用@register.filter给自定义函数做装饰(tt就是重命名我的过滤器方便在html里面调用)
@register.filter(name='tt')
def addrstr(x,y):
return x+y
index.html模板配置
截图信息如下
自定义标签{% %}:
1.settings.py里面确认是否将自己的app文件夹添加到
INSTALLED_APPS =[ ]
2.在app目录下面创建一个templatetags文件夹(名字固定)
3.在第二步创建的文件夹下面自己写一个py文件,名字可以自己定义:例如my_filter
4.导入from django import template 模块
5.做一个注册:register = template.Library()
6.写函数my_sum@register.simple_tag(name='yy')并且装饰
@register.simple_tag(name='yy')
def my_sum(x,y,z,i)
return x+y+z+i
7.html模板便签里面的调用
{% load my_filter %}
{% yy 12 3 17 89 %}
图解如下:
Django模板(filter过滤器{{ }}与tag标签{% %}应用)的更多相关文章
- Django 05 自定义过滤器、自定义标签
Django 05 自定义过滤器.自定义标签 一.自定义过滤器 #1.在项目目录下创建一个python package包 取名为common(这个名字可以自定义) #2.在common目录下创建一个t ...
- django之模板系统 --》内容(filter过滤器、tags标签【for、if、with】、母板以及继承、crf_token、注释、组件、静态文件【load static】、get_static_prefix、自定义标签和tag)
常用: Django模板中只需要记两种特殊符号: {{ }}和 {% %} {{ }}表示变量,在模板渲染的时候替换成值,{% %}表示逻辑相关的操作. 变量 {{ 变量名 }} 变量名由字母数字和下 ...
- Django模板—-自定义过滤器和标签
一.filter和simple_tag 1.在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. 2.在app中创建template ...
- Django模板语言, 过滤器整理
Django模板语言,过滤器整理 1. add {{ value|add:"2" }} 把add后的参数加给value: 处理时,过滤器首先会强制把两个值转换成Int类型. 如果强 ...
- django-DIL模板自定义过滤器,自定义标签,自定义包含标签
自定义过滤器 DTL模板语言生来只是为了方便的展示信息,所以与编程语言相比显得有点薄弱,有时候不能满足我们的需求.因此django提供了一个接口,让开发者能自定义标签和过滤器. 首先,你需要添加一个t ...
- Django(自定义过滤器和自定义标签)
模版是一个用django模版语言标记过的python字符串.模版可以包含模版标签和变量. 模版标签是在一个模版里起作用的标记.比如,一个模版标签可以产生控制结构的内容(if或者for),可以获取数据库 ...
- django模板(过滤器)
-------------------django内建的过滤器-------------------1.add 使用形式为:{{ value | add: "2"}} 意义:将va ...
- Python - Django - 模板语言之 Tags(标签)
标签使用 {% %} 注释语句:{# #} for 循环: views.py: from django.shortcuts import render, redirect, HttpResponse ...
- Django模板系统——过滤器
转自:https://www.douban.com/note/145065606/ <省得每次都得去翻麻烦> 过滤器,变量的显示形式的改变一.形式:小写{{ name | lower } ...
随机推荐
- 编写xcode5插件需要增加DVTPlugInCompatibilityUUIDs
之前使用的xcode4.6的插件在升级到xcode5后不能使用了,查了很多资料,终于知道是缺少了DVTPlugInCompatibilityUUIDs 请在插件项目plist文件中加入DVTPlugI ...
- Mysql安装报错解决办法
.msi版MySQL安装包在安装最后执行的时候到第三部或者第四部死掉 主要是因为之前安装的版本没有卸载干净,要卸载干净MySQ安装包有一些几个步骤: 1.通过卸载程序MySQL的相关组件 2.删除My ...
- 【LeetCode】2.Add Two Numbers 链表数相加
题目: You are given two linked lists representing two non-negative numbers. The digits are stored in r ...
- 10款免费的MySQL数据库图形化管理工具
绝大多数的关系数据库都明显不同于MS Access,它们都有两个截然不同的部分:后端作为数据仓库,前端作为用于数据组件通信的用户界面.这种设计非常巧妙,它并行处理两层编程模型,将数据 层从用户界面中分 ...
- codeforces Gym 100286J Javanese Cryptoanalysis (二染色)
每一单词相邻两个字母,不能同时为元音或者辅音... 各种姿势都可以过:7个for,dp,黑白染色,dfs,并查集.... 最主要的思路就是相邻字母连边,把元音和辅音看成两个集合,那么有连边的两个字母一 ...
- [CV笔记]图像特征提取三大法宝:HOG特征,LBP特征,Haar特征
(一)HOG特征 1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和 ...
- js倒计时小插件(兼容大部分浏览器)
精确到天的倒计时 <script language="JavaScript"> <!-- // (c) Henryk Gajewski var urodz= ne ...
- Hbase 操作工具类
依赖jar <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-cli ...
- ReactiveCocoa入门-part2
ReactiveCocoa是一个框架,它能让你在iOS应用中使用函数响应式编程(FRP)技术.在本系列教程的第一部分中,你学到了如何将标准的动作与事件处理逻辑替换为发送事件流的信号.你还学到了如何转换 ...
- html页面简单访问限制
PS:突然发现博客园有密码保护功能,已经可以满足基本需求了.博客园还能备份自己的所有数据,做到了数据归用户所有,平台只是展示,真是良心网站,大赞. 想要通过一个站点放一些东西给一些人看,但是又不想让所 ...