Django1.11 视图和模板语言详解

模板语言详解

模板中也有自己的语言,该语言可以实现数据展示

  • 变量和循环
{{ item }}

{% for item in item_list %} 
  <a>{{ item }}</a>  
    {{ forloop.counter }}
    {{ forloop.first }}
    {{ forloop.last }} 
{% endfor %}
<!--
forloop 变量只能在循环中得到,当模板解析器到达{% endfor %}时, forloop 就会消失
-->
  • 判断
{% if obj %}  {% else %} {% endif %}

<!--
{% if %} 标签接受and,or或者not来测试多个变量值或者否定一个给定的变量

{% if %} 标签不允许同一标签里同时出现and和or,否则逻辑容易产生歧义,例如下面的标签是不合法的:
{% if obj1 and obj2 or obj3 %} 
-->

  • 继承
<!--母板:base.html 文件-->
{% block title %}{% endblock %}

<!-- 子板继承 -->
{% extends "base.html" %}

{% block title %}
<div>
    新内容,原来包含在母版的盒子内的内容将被覆盖
</div>
{% endblock %}

<!-- 子板继承时,在原来母版内容基础上再添加新的内容 -->
{% block title %}
{{ block.super }} <!--继续展示上级代码块的内容-->
<div>原来内容还在,并添加新的内容</div>
{% endblock %}

<!--
需要注意的点:
1. 如果在模板中使用 {% extends %} ,必须保证其为模板中的第一个模板标记。 否则,模板继承将不起作用。

2. 基础模板中的 {% block %} 标签越多越好,子模板不必定义父模板中的每个 {% block %}。

3. {% block %} 的名字在同一个模板中不允许重复

-->
  • csrf_token

    {% csrf_token %}
    

    用于生成csrf_token的标签,用于防治跨站攻击验证。 其实,这里是会生成一个input标签,和其他表单标签一起提交给后台的。

  • 加载引入 html 文件片段
{% load "other.html"%}
  • 其他方法:

    <!-- 时间日期格式化 -->
    {{ date_value|date:"Y-m-d H:i:s"}}
    
    <!-- 信任外部标签 -->
    <!-- 
    tpl_ul = <ul><li>我是后台视图传过来的标签</li></ul> 
    -->
    {{ tpl_ul |safe }}
    
    <!-- v_list = [] -->
    {{ v_list|default:'空的' }}<br>
    
    

内置的过滤器

date

{{ staff.date|date:'Y-m-d'}}  
// 2018-12-17

truncatewords

<!-- 只显示 content 变量的前30个词 -->
{{ item.content |truncatewords:30 }}  

default

<!--如果一个变量是false或者为空,使用给定的默认值。否则,使用变量的值-->
{{ value|default:"nothing" }}

default_if_none

<!--假如 value 的值是 None 这显示出指的的值-->
{{ value|default_if_none:"" }}

ength

<!--返回值的长度。它对字符串和列表都起作用-->
{{ value|length }}

filesizeformat

将该数值格式化为一个 “人类可读的” 文件容量大小 (例如 '13 KB', '4.1 MB', '102 bytes', 等等)

{{ value|filesizeformat }}

add

把add后的参数加给value

{{ value|add:"2" }}  <!--如果 value 为 4,则会输出 6.-->

capfirst

将变量首字母变大写

{{ value|capfirst }}  <!--如果value是test过滤后转为Test-->

cut

移除value中所有的与给出的变量相同的字符串

{{ value|cut:" " }}

dictsort

根据指定的key值对列表字典排序,并返回

{{ value|dictsort:"name" }}

如,给定的值是:

[
    {'name': 'peter', 'age': 19},
    {'name': 'amy', 'age': 22},
    {'name': 'jim', 'age': 31},
]

那么结果将是;

[
    {'name': 'amy', 'age': 22},
    {'name': 'jim', 'age': 31},
    {'name': 'peter', 'age': 19},
]

也可以处理较为复杂的;

{% for book in books|dictsort:"author.age" %}
    * {{ book.title }} ({{ book.author.name }})
{% endfor %}

如给定值为:

[
    {'title': '1984', 'author': {'name': 'George', 'age': 45}},
    {'title': 'Timequake', 'author': {'name': 'Kurt', 'age': 75}},
    {'title': 'Alice', 'author': {'name': 'Lewis', 'age': 33}},
]

那么结果为:

* Alice (Lewis)
* 1984 (George)
* Timequake (Kurt)

random

随机返回一个值

{{ value|random }}

如果 value 是 列表 ['a', 'b', 'c', 'd'], 可能输出的是 "b"

slice

**切片 ** 可对列表或字符串切片

{{ some_list|slice:":2" }}

如果 some_list['a', 'b', 'c'], 输出结果为 ['a', 'b']

divisibleby

用于判断整除

<!--是否被 5 整除-->
{{ nmu|divisibleby: 5 }}
Emmet:HTML/CSS代码快速编写神器
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容