Django 学习日记 - Templates - setp10

1 模板的组成

HTML代码+逻辑控制代码。

2 逻辑控制代码的组成

逻辑控制代码类型 使用方法
变量(使用双大括号来引用变量 ) {{ var_name }}
标签(tag)的使用(使用大括号和百分号的组成来表示使用tag ) {% load staticfiles %}
过滤器(filter)的使用 {{ ship_date ¦ date:"F j, Y" }},ship_date变量传给data过滤器,data过滤器通过使用"F j, Y"这几个参数来格式化日期数据。"¦"代表类似Unix命令中的管道操作。

2.1 常用标签(tag)

标签 说明
{% if %} 可以使用and, or, not来组织你的逻辑。但不允许and和or同时出现的条件语句中。新版本中已经支持{% elif %}这样的用法。
{% ifequal %}和{% ifnotequal %} 比较是否相等,只限于简单的类型,比如字符串,整数,小数的比较,列表,字典,元组不支持。
{% for %} 用来循环一个list,还可以使用resersed关键字来进行倒序遍历,一般可以用if语句来先判断一下列表是否为空,再进行遍历;还可以使用empty关键字来进行为空时候的跳转。
{% cycle %} 在循环时轮流使用给定的字符串列表中的值。
{# #} 单行注释
{% comment %} 多行注释
{% csrf_token %} 生成csrf_token的标签,用于防止跨站攻击验证。
{% debug %} 调用调试信息
{% filter %} 将filter 标签圈定的内容执行过滤器操作。
{% autoescape %} 自动转义设置
{% firstof %} 输出第一个值不等于False的变量
{% load %} 加载标签库
{% now %} 获取当前时间
{% spaceless %} 移除空格
{% url %} 引入路由配置的地址
{% verbatim %} 禁止render
{% with %} 用更简单的变量名缓存复杂的变量名

2.2 常用过滤器(filter)

过滤器 作用
add 给变量加上响应的值
addslashes 给变量中的引号前加上斜线
capfirst 首字母大写
cut 从字符串中移除指定的字符
date 格式化日期字符串
default 如果值是False,就替换成设置的默认值,否则就使用本来的值
default_if_none 如果值是None,就替换成设置的默认值,否则就使用本来的值
dictsort 按照设定参数(key)对应的value对列表进行排序
dictsortreversed 和上面恰好相反
divisibleby 是否能够被某个数字整除,是的话返回True,否则返回False
escape 对字符串进行转义
escapejs 替换value中的某些字符,以适应JAVASCRIPT和JSON格式
filesizeformat 格式化文件大小显示
first 返回列表中的第一个值
last 返回列表中最后一个值
floatformat 格式化浮点数
length 求字符串或者列表长度
length_is 比较字符串或者列表的长度
urlencode 对URL进行编码处理
upper\lower 大写\小写
safe 对某个变量关闭自动转义
slice 切片操作
time 格式化时间
timesince 格式化时间 (e.g., “4 days, 6 hours”).
truncatechars 按照字符截取字符串
truncatewords 按照单词截取字符串
striptags 过滤掉html标签

3 模板包含和继承

3.1 概念

  • 包含

{% include %} 允许在模板中包含其它模板的内容。
标签的参数可以是:模板名称 、变量、字符串。
{% include 'nav.html' %}
{% include 'app/nav.html' %}
{% include template_name %}
还可以在包含的时候传递变量。

  • 继承:

本质上说:模板继承就是先构造一个基础框架模板,而后在其子模板中对它所包含站点共用部分和定义进行重载。
1、定义块:{% block %}
2、继承父模板{% extends %}

3.2 注意事项

  1. 包含和继承可以把一些共用的网页模块独立出来,以减少代码的冗余。
  2. 如果在模板里使用{% extends %}的话,这个标签必须在所有模板标签的最前面,否则模板继承不工作
  3. 通常尽可能模板里的{% block %}越多越好,子模板不必定义所有的父block
  4. 如果你需要得到父模板的块内容,{{ block.super }}变量可以帮你完成工作
    当你需要给父块添加内容而不是取代它的时候这就很有用
  5. 不能在同一模板里定义多个同名的{% block %},因为块标签同时在两个地方工作,不仅仅在子模板中,而且在父模板中也填充内容,如果子模板有两个同名的标签,父模板将不能决定使用哪个块内容来使用

4 参考链接

Django 1.9:官方文档
Django 1.9:官方文档 - 包含
Django 1.9:官方文档 - 模块
Django 1.9:官方文档 - 继承
Django 1.82:中文翻译文档【仅供参考】

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

推荐阅读更多精彩内容