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 } ...
随机推荐
- ftp和sftp
一.ftp ftp是文件传输协议,ftp协议包括两部分,一个是ftp客户端,另一个是ftp服务器. 原理:一般情况下,当使用FTP服务的时候,我们都知道默认是21号端口,其实还有一个20号端口.FTP ...
- Exchange DSAccess 事件分析
本文介绍了如何使用事件 ID 2080 来帮助诊断 Exchange DSAccess 问题中所包含的信息. 许多朋友经常遇到Active Directory 域和Exchange 服务器通信问题.那 ...
- selenium +python之Page Obiect设计模式
PageObject是selenium自动化测试项目开发实践的最佳设计模式之一,它主要体现对界面交互细节的封装,这样可以使测试案例更关注于业务而非界面细节,从而提高测试案例的可读性. 1.认识Page ...
- LoadRunner使用(1)
一.LoadRunner脚本录制 LoadRunner测试分为两个步骤: 第一步:录制脚本,其实就是监控并记录这段时间发送的HTTP请求 第二步:启动多个线程,用录制的脚本,模拟多线程发送请求. (1 ...
- SQL server的一个分割表值函数
CREATE FUNCTION [dbo].[Fn_Split] ( @SplitString text, -- 如果要传入NText类型,下面需要相应的修改,注释行为NText下同 ) = ','- ...
- [手势识别] CNN + OpenCV 手势识别记录
这几天没事,想着再学点一些视觉识别方向的东西,因为之前做了验证码识别,有了机器学习的信心,因此这次打算做个手势识别,参考了很多网上的图像处理方式,中间也遇到了很多问题,最终算是做出来了吧. 1.训练集 ...
- 《实战Python网络爬虫》- 感想
端午节假期过了,之前一直在做出行准备,后面旅游完又休息了一下,最近才恢复状态. 端午假期最后一天收到一个快递,回去打开,发现是微信抽奖中的一本书,黄永祥的<实战Python网络爬虫>. 去 ...
- python_93_面向对象实例2
class Role: def __init__(self,name,role,weapon,life_value=100,money=15000): '构造函数:实例化时做一些类的初始化工作' se ...
- LibreOffice Writer Comment
选择文字段后输入:Ctrl+Alt+C可以插入评论,但会出现: unknown author 解决方法:Tools>Options>LibreOffice>User Data. Fi ...
- 记录一次mysql中自定义获取UUID的函数
循环方式一: DELIMITER :; drop function if exists test.fn_test:; create function test.fn_test() ) begin ) ...