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 } ...
随机推荐
- 四道java语言练习基础题:
一.==符的使 首先看一段比较有意思的代码 Integer a = 1000,b=1000; Integer c = 100,d=100; public void mRun(final String ...
- Ecshop数据表结构
-- 表的结构 `ecs_account_log`CREATE TABLE IF NOT EXISTS `ecs_account_log` (`log_id` mediumint(8) unsigne ...
- [dp][uestc oj]J - 男神的约会
J - 男神的约会 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit ...
- Codeforces Round #313 (Div. 2) A.B,C,D,E Currency System in Geraldion Gerald is into Art Gerald's Hexagon Equivalent Strings
A题,超级大水题,根据有没有1输出-1和1就行了.我沙茶,把%d写成了%n. B题,也水,两个矩形的长和宽分别加一下,剩下的两个取大的那个,看看是否框得下. C题,其实也很简单,题目保证了小三角形是正 ...
- fork新建进程
#include <sys/types.h>#include<sys/wait.h>#include<unistd.h>#include<stdio.h> ...
- 查询linux文件的MD5值
Linux下查询文件的MD5值:md5sum xxx.iso.md5 MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.MD5全称是报文摘要算法(Message-Digest Algor ...
- 【转】在MAC下使用ISO制作Linux的安装USB盘
http://www.linuxidc.com/Linux/2013-04/82973.htm 在Mac环境下,将Linux的ISO镜像生成一个Linux的安装盘,和Linux下差不多,只是Mac下有 ...
- CPP-网络/通信:经典HTTP协议详解
2008-11-03 09:11 by Hundre, 266688 阅读, 23 评论, 收藏, 编辑 转自:http://blog.csdn.net/gueter/archive/2007/03/ ...
- Java中的ArrayList类和LinkedList
集合的体系: ----------| Collection 单列集合的根接口----------------| List 如果实现了List接口的集合类,具备的特点: 有序,可重复.--------- ...
- CVE-2014-1767
[0x00].简介 CVE-2014-1767漏洞是由于Windows的afd.sys驱动在对系统内存的管理操作中,存在着悬垂指针的问题.在特定情况下攻击者可以通过该悬垂指针造成内存的double ...