Django模板层之模板语法

1.变量

  • 变量输出语法
    { {  var  } }
    
  • 当模版引擎遇到一个变量,将计算这个变量,然后将结果输出
  • 变量名必须由字母、数字、下划线(不能以下划线开头)和点组成
  • 当模版引擎遇到点("."),会按照下列顺序查询:
    • 字典查询,例如:foo["bar"]
    • 属性或方法查询,例如:foo.bar
    • 数字索引查询,例如:foo[bar]
  • 如果变量不存在, 模版系统将插入'' (空字符串)
  • 在模板中调用方法时不能传递参数

2.标签

  • 语法
    { %  tag  % }
    
  • 作用
    • 在输出中创建文本
    • 控制循环或逻辑
    • 加载外部信息到模板中
for标签
{ %  for ... in ...  % }
    循环逻辑

{ %  endfor  % }
if标签
{ %  if ...  % }
    逻辑1
{ %  elif ...  % }
    逻辑2
{ %  else  % }
    逻辑3
{ %  endif  % }
comment标签
{ %  comment  % }
    多行注释
{ %  endcomment  % }
include:加载模板并以标签内的参数渲染
{ %  include "base/index.html"  % }
url:反向解析
{ %  url 'name' p1 p2  % }
csrf_token:这个标签用于跨站请求伪造保护
{ %  csrf_token  % }

3.过滤器

  • 语法:
    { {  变量|过滤器  } },例如{ {  name|lower  } },表示将变量name的值变为小写输出
    
  • 使用管道符号 (|)来应用过滤器
  • 通过使用过滤器来改变变量的计算结果
  • 关闭HTML自动转义
    { {  data|safe  } }
    
  • 可以在if标签中使用过滤器结合运算符
    if list1|length > 1
    
  • 过滤器能够被“串联”,构成过滤器链
    name|lower|upper
    
  • 过滤器可以传递参数,参数使用引号包起来
    list|join:", "
    
  • default:如果一个变量没有被提供,或者值为false或空,则使用默认值,否则使用变量的值
    value|default:"什么也没有"
    
  • date:根据给定格式对一个date变量格式化

    value|date:'Y-m-d'
    
  • 官方文档内置过滤器参考:

  • 网址:Built-in template tags and filters | Django 文档 | Django

4.注释

  • 单行注释
{# 注释 #}
  • 多行注释
{%  comment  %}
      多行注释
{%  endcomment  %}

5.模板运算

  • { {  value|add:10  } }
    note:value=5,则结果返回15
    
  • { {  value|add:-10  } }
    note:value=5,则结果返回-5,加一个负数就是减法了
    
  • { %  widthratio 5 1 100  % }
    note:等同于:(5 / 1) * 100 ,结果返回500,
    withratio需要三个参数,它会使用参数1/参数2*参数3的方式进行运算,进行乘法运算,使「参数2」=1
    
  • { %  widthratio 5 100 1  % }
    note:等同于:(5 / 100) * 1,则结果返回0.05,和乘法一样,使「参数3」= 1就是除法了。
    

6.自定义 标签 或 过滤器

  • 首先在当前应用目录下创建一个templatetags模板标签目录,建议内放一个__init__.py的空文件
  • 然后在templatetags目录下创建一个模板标签文件pagetag.py,具体代码如下:
 templatetags
    ├── pagetag.py
    ----------------pagetag.py-------------------------
    from django import template

    register = template.Library()

    # 自定义过滤器(实现大写转换)
    @register.filter
    def myupper(val):
        # print ('val from template:',val)
        return val.upper()

    # 自定义标签(实现减法计算)
    #from django.utils.html import format_html
    @register.simple_tag
    def jian(a,b):
        res = int(a) - int(b)
        return res
  • 使用:在模板文件使用 { % load pagetag % }
  <h4>6. 自定义标签 </h4>
  {% load pagetag %}
  大写:{{name|myupper}} <br/>
  相减:{% jian m1 m2 %}
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值