1 用两个大括号括起来的文字{{person_name}} 称为变量
2 被 大括号和面分号包围的文件({% if ordered_warranty %})是模板标签
3 过滤器是用管道符(|) 和Unix管道符一样
4 一旦你创建一个 Template对象,你可以用 context来传递数据给它。 一个context是一系列变量和它们值的集合。模板使用它来赋值模板变量标签和 执行块标签。
5 变量名必须由英文字符开始 (A-Z或a-z)并可以包含数字字符、下划线和小数点。 (小数点在这里有特别的用途,稍后我们会讲到)变量是大小写敏感的。
6 在 Django 模板中遍历复杂数据结构的关键是句点字符 (.)。使用句点可以访问字典的键值、属性、索引和对象的方法。
7 {% if %} 标签检查(evaluate)一个变量,如果这个变量为真(即,变量存在,非空,不是布尔值假),系统会显示在 {% if %} 和 {% endif %} 之间的任何内容. {% else %} 标签是可选的:

8 在python中空的列表 ( [] ),tuple( () ),字典( {} ),字符串( '' ),零( 0 ),还有 None 对象,在逻辑判断中都为假,其他的情况都为真。

9 {% if %}标签接受 and, or或者 not关键字来对多个变量做判断 ,或者对变量取反( not)并没有
10 {% elif %}标签,请使用嵌套的 {% if %} , 一定要用 {% endif %} 关闭每一个 {% if %} 标签.
11 {% for %}允许我们在一个序列上迭代。与Python的 for语句的情形类似,循环语法是 for X in Y,Y是要迭代的序列而X是在每一个特定的循环中使用的变量名称。每一次循环中,模板系统会渲染在 {% for %}和 {% endfor %}之间的所有内容.
12 Django不支持退出循环操作。如果我们想退出循环,可以改变正在迭代的变量,让其仅仅包含需要迭代的项目
13 {% for %}标签在循环中设置了一个特殊的 forloop模板变量
14 forloop.counter0类似于forloop.counter,但是它是从0计数的。第一次执行循环时这个变量会被设置为0。

15 forloop.revcounter 是表示循环中剩余项的整型变量。在循环初次执行时 forloop.revcounter 将被设置为序列中项的总数。最后一次循环执行中,这个变量将被置1。

16 forloop.revcounter0 类似于 forloop.revcounter ,但它以0做为结束索引。在第一次执行循环时,该变量会被置为序列的项的个数减1。在最后一次迭代时,该变量为0。

17 forloop.first 是一个布尔值。在第一次执行循环时该变量为True,在下面的情形中这个变量是很有用的。

18 forloop.last 是一个布尔值;在最后一次执行循环时被置为True。一个常见的用法是在一系列的链接之间放置管道符(|)

19 forloop 变量仅仅能够在循环中使用,在模板解析器碰到 {% endfor %} 标签时, forloop 就不可访问了

20 {% ifequal %} 标签比较两个值,当他们相同时,显示在 {% ifequal %} 和 {% endifequal %} 之中所有的值。

21 和 {% if %} 类似, {% ifequal %} 支持可选的 {% else%} 标签, 只有模板变量,字符串,整数和小数可以作为 {% ifequal %} 标签的参数,其他的一些类型,例如Python的字典类型、列表类型、布尔类型,不能用在

{% ifequal %} 中.

22 象HTML和其他的语言例如python一样,Django模板系统也允许注释。 注释使用 {# #}

23 模板过滤器是在变量被显示前修改它的值的一个简单方法

23 addslashes : 添加反斜杠到任何反斜杠、单引号或者双引号前面。 这在处理包含JavaScript的文本时是非常有用的。

24 date : 按指定的格式字符串参数格式化 date 或者 datetime 对象

25 在settings.py中的TEMPLATE_DIRS设置如下:

import os.path

TEMPLATE_DIRS = (

os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/'),

)

26 django.shortcuts 模块中名为 render_to_response() 的函数。大多数时候,你将使用 render_to_response() ,而不是手动加载模板、创建 Context 和 HttpResponse 对象,它会加载模板、填充 context 、将经解析的模板结果返回为 HttpResponse 对象这一系列操作

27  {% include %} 。该标签允许在(模板中)包含其它的模板的内容。标签的参数是所要包含的模板名称,可以是一个变量,也可以是用单/双引号硬编码的字符串。每当在多个模板中出现相同的代码时,就应该考虑是否要使用 {% include %} 来减少重复

28 模板继承就是先构造一个基础框架模板,而后在其子模板中对它所包含站点公用部分和定义块进行重载。

29 {% block %} 标签告诉模板引擎,子模板可以重载这些部分

30   {% extends %} 标签,该模板是一个子模板。模板引擎立即装载其父模板

31 继承并不改变 context 的工作方式,而且你可以按照需要使用多层继承。使用继承的一种常见方式是下面的三层法:

a. 创建 base.html 模板,在其中定义站点的主要外观感受。这些都是不常修改甚至从不修改的部分。

b. 为网站的每个区域创建 base_SECTION.html 模板(例如, base_photos.html 和 base_forum.html )。这些模板对 base.html进行拓展,并包含区域特定的风格与设计。

c. 为每种类型的页面创建独立的模板,例如论坛页面或者图片库。这些模板拓展相应的区域模板。

32 使用模板继承的一些诀窍:

a. 如果在模板中使用 {% extends %} ,必须保证其为模板中的第一个模板标记。否则,模板继承将不起作用。

b. 一般来说,基础模板中的 {% block %} 标签越多越好。记住,子模板不必定义父模板中所有的代码块,因此你可以用合理的缺省值对一些代码块进行填充,然后只对子模板所需的代码块进行(重)定义。俗话说,钩子越多越好。

c. 如果发觉自己在多个模板之间拷贝代码,你应该考虑将该代码段放置到父模板的某个 {% block %} 中。

d. 如果需要获得父模板中代码块的内容,可以使用 {{ block.super }} 变量。如果只想在上级代码块基础上添加内容,而不是全部重载,该变量就显得非常有用了。

e. 不可同一个模板中定义多个同名的 {% block %} 。存在这样的限制是因为block 标签的工作方式是双向的。也就是说,block 标签不仅挖了一个要填的坑,也定义了在 父 模板中这个坑所填充的内容。如果模板中出现了两个相同名称的{% block %} 标签,父模板将无从得知要使用哪个块的内容。

f. {% extends %} 对所传入模板名称使用的加载方法和 get_template() 相同。也就是说,会将模板名称被添加到TEMPLATE_DIRS 设置之后。

g. 多数情况下, {% extends %} 的参数应该是字符串,但是如果直到运行时方能确定父模板名,这个参数也可以是个变量。这使得你能够实现一些很酷的动态功能。

转载于:https://www.cnblogs.com/fangshenghui/p/3749762.html

python django 模板相关推荐

  1. Python Django 模板继承(header,body,footer抽取)

  2. Python Django模板页面自定义过滤器实现md语法及字符串切割代码示例

  3. Python Django模板页面过滤器使用示例

  4. Python Django模板语法标签代码示例(页面渲染与取值)

  5. Python Django模板templates渲染及配置

  6. Python+django网页设计入门(18):自定义模板过滤器

    前导课程: Python+django网页设计入门(17):模板语法及应用 Python+django网页设计入门(16):优化设计复用分页代码 Python+django网页设计入门(15):公用模 ...

  7. Python+django网页设计入门(17):模板语法及应用

    前导课程: Python+django网页设计入门(16):优化设计复用分页代码 Python+django网页设计入门(15):公用模板设计与使用 Python+django网页设计入门(14):使 ...

  8. Python+django网页设计入门(15):公用模板设计与使用

    前导课程: Python+django网页设计入门(14):使用中间件对抗爬虫 Python+django网页设计入门(13):表单.修改密码 Python+django网页设计入门(12):使用Bo ...

  9. django 引用css失效_如何使用Python中Django模板?

    译者:穆胜亮 https://www.mattlayman.com/understand-django/templates-user-interfaces/ 篇文章将学习如何使用Django模板.模板 ...

最新文章

  1. 给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价
  2. 大约 Apple Metal API 一些想法
  3. Android 打印log 在logcat 看不到
  4. 用分类映射的办法分类两条夹角为0.3度的直线
  5. 让我吐血的一次重做系统
  6. 【安全系列之跨域】跨域解决方案
  7. ssas 数据源mysql_BI之SSAS完整实战教程2 -- 开发环境介绍及多维数据集数据源准备...
  8. Linux 16.04 右上角输入法丢失的问题
  9. html - table分页断行,关于window.print网页分页换页table不断行的处理
  10. 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序 解决方案
  11. 【angularjs】【学习心得】路由继续研究篇
  12. 搭建gradle环境
  13. 118 Python程序中的线程操作-守护线程
  14. 如何实现一个文件系统
  15. tcp/ip源代码(17)——ip_fragment
  16. 关于HTTP缓存的故事
  17. 操作系统:Win10如何彻底卸载自带的Flash软件
  18. OSChina 周一乱弹 —— 程序猿到底是多有才?
  19. 5GC基础:架构和网元
  20. 科学松鼠会-Kindle精选

热门文章

  1. C++ XML解析之TinyXML篇
  2. [转贴]漫谈计算机图书翻译的四种境界
  3. 【数据平台】python中文分词工具jieba
  4. 中专学校的计算机教什么,中专计算机学校
  5. linux sh 字符截取,shell字符截断
  6. python定义方法self会被当作变量_为什么Python必须在方法定义和调用中显式使用“self”?...
  7. 用javascript制作随机汉字打字练习小程序
  8. 一起来看看java正则表达式
  9. Python知识点笔记-列表list、元组tuple和dict类型
  10. 第7周实践项目2 队列的链式存储结构及其基本运算的实现