分享

Django模板语言详解

 明灭的烟头 2018-09-11

Django模板语言详解

图片来源网络

模板Templates

在上一篇文章中我简单的介绍了Django模板语言,这篇文章进一步讲解模板中的变量、标签等。

Django的模板是一个简单的文本文件,它可以生成任何文本格式(HTML、XML、CSV等),在本文开始之前先看一个Django模板的例子:

Django模板语言详解

从这个例子中可以看到,模板标签可以是单独出现的,如extends标签;也可以是成对出现的,如block标签和for标签。而模板的主体就是一个HTML结构的文本文件,看到这里我想如果有过ASP, PHP开发经验的人都会感到很亲切,因为它们的语法非常相似,都是嵌入到HTML中的标记语言。

变量Variables

变量的基本用法:{{ variable }},当模板引擎遇到变量时会将变量替换为具体值。变量名可以包含字母数字和下划线,不能包含空格及其它特殊符号。句点(.)在变量中有特殊意义,如果模板引擎遇到了句点将会按照下面的顺序对其进行解释:

  1. 字典查找

  2. 查找属性和方法

  3. 查找下标元素

注意如果句点后面的变量是一个可以调用的方法的话,那么这个方法会按照空参数的方式调用,例如一个字典的iteritems方法可以在模板中用以下方式调用:

Django模板语言详解

过滤器Filters

你可以使用过滤器来修改变量值的显示样式。过滤器的使用方式 {{ 变量|过滤器方法}}。过滤器可以连续使用,形式如: {{ 变量|过滤器方法1|过滤器方法2}}。

注意变量、管道符(|)和过滤器方法之间不能有空格。

某些过滤器还可以接收参数,例如:{{ bio|truncatewords:30 }},这句代码的意思是显示bio的前30个单词。

如果过滤器参数包含空格的话,参数就要用引号扩起来,例如:{{ list|join:', ' }}。

Django大约提供了60个过滤器,具体介绍可以在Django官网看到:

https://docs./en/1.11/ref/templates/builtins/#ref-templates-builtins-filters。

下面介绍几种常用的过滤器:

  • Default

如果变量是false或者空,显示default值:例如: {{ value|default:'nothing' }},如果value是false会在页面上显示nothing。

  • Length

显示一个字符串或者数组的长度,如:{{ value|length }}

  • Filesizeformat

将文件大小按照人类可读的形式显示,例如一个文件由123456789,那么显示成117.7 MB,语法形式:{{ value|filesizeformat }}

  • Add

加法运算:{{ value|add:'2' }}

这个方法会先按照数值来计算,如果失败了就直接将两个值拼接在一起,如连接两个数组。

  • Capfirst

首字母大写:{{ value|capfirst }}

  • cut

删除指定值,例如去掉字符串中的空格:{{ value|cut:' ' }}

如果value是'String with spaces',那么输出'Stringwithspaces'.

  • Date

格式化日期,该方法参数较多也很重要,请参考Django官网。

  • Dictsort

将一个字典按照某一字典项进行排序后返回,

例如,有一个字典users如下,包含三个人员信息:

Django模板语言详解

按照人名进行排序:

Django模板语言详解

显示样式:

Django模板语言详解

  • Escape

将一个html字符串转意:

Django模板语言详解

浏览器显示:

Django模板语言详解

  • Join

拼接多个元素

Django模板语言详解

标签Tags

  • For标签

循环执行标签内部代码,例如:

Django模板语言详解

  • If,elif和else标签

和其它编程语言的if语句一样,当条件为真或不为空时,执行代码块,例如:

Django模板语言详解

If标签中可以嵌套其它标签。

注释Comments

两种注释方式:

{# 这里是注释 #}

注释标签:

Django模板语言详解

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多