博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
标签和过滤器
阅读量:5833 次
发布时间:2019-06-18

本文共 4527 字,大约阅读时间需要 15 分钟。

模板语法之变量:

  -- 变量:相当于print打印了该变量

  -深度查询-----》统一都用句点符

{模板语言注释:前端看不到}{相当于print了该变量}

模板语言之变量

字符串:{

{ name }}

数字:{

{ age }}

列表:{

{ ll }}

元祖:{

{ tu }}

字典:{

{ dic }}

{只写函数名:相当于函数名(),执行该函数}

函数:{

{ test }}

{对象内存地址}

对象:{

{ lqz }}

列表套对象:{

{ person_list }}

字典套对象:{

{ person_dic }}


深度查询

列表第0个值:{

{ ll.0 }}

列表第3个值:{

{ ll.3 }}

字典取值:{

{ dic.name }}

字典取列表值:{

{ dic.ll }}

{再继续取值,继续点}

对象取数据属性:{

{ lqz.name }}

对象取绑定给对象的函数属性:{

{ lqz.get_name }}

对象取绑定给类的函数属性:{

{ lqz.cls_test }}

对象取静态方法:{

{ lqz.static_test }}

把对象列表中egon年龄取出来:{

{ person_list.1.age }}

{拓展:不能调有参数的方法}

字符串的方法:{

{ name.upper }}

模板之过滤器

  --语法:{
{第一个参数/过滤器的名字:第二个参数}}

  --常用过滤器:

   -length

   -default

    -slice

  -data

  -filesizeformat

  -truncatechars

  -truncatewords

  -safe

  -add

 

模板语言之过滤器

{后面就是个python中的函数,|前面的,是函数的第一个参数,冒号后面的是第二个参数}

统计字符串长度:{

{ name|length }}

统计列表长度:{

{ ll|length }}

过滤器之默认值:{

{ ll2|default:'没有值' }}

过滤器之filesizeformat--1:{

{ 2013344444444444444444444445555444444444444444444444444444444444444444444444444444444444443|filesizeformat }}

过滤器之filesizeformat--2:{

{ file_size|filesizeformat }}

过滤器之不使用date:{

{ ctim }}

过滤器之date:{

{ ctim|date:'Y-m-d' }}

{前闭后开区间}

过滤器之slice:{

{ ll|slice:'2:-1' }}

{支持步长}

过滤器之slice-字符串:{

{ name|slice:'0:3:3' }}

{三个起步}

过滤器之truncatechars:{

{ 'dafddfafgadfgaasdgadgfadaf'|truncatechars:5 }}

过滤器之truncatewords:{

{ '我 dfaf ga dfgaas 你 dgf adaf'|truncatewords:5 }}

过滤器之不用safe:{

{ h1 }}

过滤器之用safe:{

{ h1|safe }}

过滤器之不用safe:{

{ script }}

{

过滤器之用safe:{

{ script|safe }}

}

过滤器之用add:{

{ 12|add:'1' }}

{ 数字增加}

过滤器之用add:{

{ 'egon'|add:'dsb' }}

View Code

 

class Person():        def __init__(self, name, age):            self.name = name            self.age = age        def get_name(self):            return self.name        @classmethod        def cls_test(cls):            return 'cls'        @staticmethod        def static_test():            return 'static'         模板里不支持带参数        def get_name_cs(self,ttt):            return self.name    lqz=Person('lqz',18)    egon=Person('egon',18)    person_list=[lqz,egon]    person_dic={
'lqz':lqz} file_size=1024 import datetime ctim=datetime.datetime.now()
View Code

模板之标签

-{% 标签 %} -for:forloop:对象(里面有好多东西:parentloop,last,first,counter....)   empty:被循环的对象是空,才走它    for循环可以嵌套,也可以用if -if: {% if forloop.first %}   

第一次的我

{% elif forloop.last %}   

最后的我

{% else %}   

{ { foo }}

吧 {% endif %} -with:重命名,应用在变量名过长 ********都要有结束********

模板语言之标签

{
{% for foo in ll %}}{ {
{ forloop }}}{

{

{ forloop.first }}--->{
{ forloop.counter0 }}--->{
{ forloop.revcounter }}----->{
{ foo }}

}{
{% endfor %}}{
{% for foo in ll %}}{ {% for i in person_list %}}{ 取出外层是第几次循环}{ {
{ forloop.parentloop.counter }}}{

{

{ forloop.first }}--->{
{ forloop.counter0 }}--->{
{ forloop.revcounter }}----->{
{ foo }}

}{ {% endfor %}}{
{% endfor %}}{**************循环的对象是空,才会走到empty,而不是对象里面的东西为空}{
{% for foo in dic2 %}}{

{

{ foo }}

}{ {% empty %}}{ 傻逼了}{
{% endfor %}}{只循环字典的话,取到的是key值}{
{% for foo in dic %}}{取到value的值}{
{% for foo in dic.values %}}{取到key 和 value的值}{
{% for k,foo in dic.items %}}{

{

{ k }}----->{
{ foo }}

}{ {% empty %}}{ 傻逼了}{
{% endfor %}}{
{% if user %}}{ 退出}{ {% else %}}{ 登录}{ 注册}{
{% endif %}}{for循环判断如果是第一次,打印第一次,其他打印正常值}{% for foo in ll %} {% if forloop.first %}

第一次的我

{% elif forloop.last %}

最后的我

{% else %}

{

{ foo }}

{% endif %}{% endfor %}

{with 相当于取别名,作用:变量太长,可以简化}{
{% with name as ttt %}}{ {
{ ttt }}}{ {
{ name }}}{ {
{ user }}}{}{
{% endwith %}}------{% with dic.ll.2 as ttt %} {
{ ttt }} {
{ ttt }}{% endwith %}

自定义标签和过滤器

标签不能用在if判断,过滤器,可以用在if判断 -自定义过滤器      -1 先app是不是已经在setting中注册      -2 在app下创建一个templatetags(****名字不能变***)的文件夹(模块)      -3 在模块下创建一个py文件,名字随意:mytag.py   -4 # 第一步,导入template   from django.template import Library   # 第二步,定义一个叫register的变量=template.Library() r   egister = Library()   -5 写一个函数,用@register.filter(name='yyy')装饰一下(可以指定别名)   def str_add(str1, str2): #一定要有返回值   # 业务逻辑很复杂     return str1 + str2 -6 在模板里:(新定定义的标签,过滤器,都要重启程序) -{% load mytag %} -{ {'lqz'|str_add:'nb'}} -自定义标签: -1-4:前4步,根过滤器的定义完全一样 -5 只是装饰器不一样 @register.simple_tag() def add_nb(value): return value+'nb' -6 在模板里:(多个参数,以空格区分) -{% load mytag %} -{% add_nb 'lqz'%}

 

转载于:https://www.cnblogs.com/zhouhao123/p/9936744.html

你可能感兴趣的文章
【PMP】Head First PMP 学习笔记 第一章 引言
查看>>
抓住云机遇编排工作 搞定复杂IT工作流
查看>>
MYSQL的longtext字段能放多少数据?
查看>>
MTK 平台上如何给 camera 添加一种 preview size
查看>>
云计算最大难处
查看>>
关于数据分析思路的4点心得
查看>>
Memcached安装与配置
查看>>
美团数据仓库的演进
查看>>
SAP被评为“大数据”预测分析领军企业
查看>>
联想企业网盘张跃华:让文件创造业务价值
查看>>
记录一次蚂蚁金服前端电话面试
查看>>
直播源码开发视频直播平台,不得不了解的流程
查看>>
Ubuntu上的pycrypto给出了编译器错误
查看>>
聊聊flink的RestClientConfiguration
查看>>
在CentOS上搭建git仓库服务器以及mac端进行克隆和提交到远程git仓库
查看>>
測試文章
查看>>
Flex很难?一文就足够了
查看>>
【BATJ面试必会】JAVA面试到底需要掌握什么?【上】
查看>>
CollabNet_Subversion小结
查看>>
mysql定时备份自动上传
查看>>