Django模板系统(Template System)——之模板语言1

本篇介绍几个通用标签:

1.if标签:{% if %}...{% endif %}

2.for标签:{% for %}...{% endfor %}

3.比较标签:{% ifequal/ifnotequal %}...{% endifequal/endifnotequal %}

4.注释标签:{% comment %}...{% endcomment %}

模板

是一个纯文本文件,或是一个用Django模板语言标记过的普通的Python字符串。 模板可以包含模板标签和变量。

      模板标签    是在一个模板里面起标记的作用,也可称为——区块标签。是被{%和%}包围,形如:{% *** %}

      变量    是一个在模板里用来输出值的标记。变量标签被 {{ 和 }} 包围,形如:{{ varname }}

模板语言中的通用标签和过滤器

      if 、else 标签:{% if *** %} ... {% else %} ... {% endif %}

if 可接受 and , or 或者 not 关键字来对多个变量做判断;多次使用同一个逻辑操作符是没有问题的,如:{% if * or * or * %} 是合法的 ;但是我们不能把不同的操作符组合起来,如:{% if * or * and * %} 是非法的;

{% else %} 是可选标签;

没有 {% elif %} 标签, 可使用嵌套的 {% if %} 标签来达到同样的效果;

系统不支持用圆括号来组合比较操作。 如需要用到圆括号来组合表达你的逻辑式,考虑将它移到模板之外处理,然后以模板变量的形式传入结果,或者用嵌套的{% if %}标签替换;

{% if  *** %}

...

{% else %}

...

{% endif %}

      for 标签:{% for x in y %} ... {% empty %} ... {% endfor %}

        {% for %}允许在一个序列上迭代,与Python的 for 语句的情形类似。给标签增加一个 reversed 使得该列表被反向迭代{% for x in y reversed %};

{% empty %}是可选标签,通过它可以定义当列表为空时的输出内容。亦可在循环之前用 if 标签检测序列是否为空,可达到同样的效果;

此循环不支持退出break,也不支持continue;

{% for %}循环里有一个称为 forloop 的模板变量,这个变量有一些提示循环进度信息的属。forloop 变量仅仅能够在循环中使用,在模板解析器碰到{% endfor %}标签后,forloop就不可访问了。

        forloop.counter 是一个表示当前循环的执行次数的整数计数器,这个计数器是从1开始的,所以在第一次循环时 forloop.counter 将会被设置为1

forloop.counter0 类似于 forloop.counter ,但是它是从0计数的, 第一次执行循环时这个变量会被设置为0

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

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

forloop.first 是一个布尔值,如果该迭代是第一次执行,那么它被置为True

forloop.last 是一个布尔值,在最后一次执行循环时被置为True

forloop.parentloop 是一个指向当前循环的上一级循环的 forloop 对象的引用(在嵌套循环的情况下)

      ifequal、ifnotequal 标签:{% ifequal var1 var2 %}...{% else %}...{% endifequal %}  、  {% ifnotequal var1 var2 %}...{% else %}...{% ifnotequal %}

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

              {% ifnotequal %} 标签比较两个值,当他们不相等时,显示在 {% ifnotequal %} 和 {% endifnotequal %} 之中所有的值;

支持可选的 {% else %} 标签;

{% ifequal/ifontequal %} 标签的参数标签的参数只有模板变量、字符串、整数和小数,其他任何类型,例如Python的字典类型、列表类型、布尔类型,不能用在 {% ifequal/ifnotequal %} 中。

      注释 标签:{# ... #}   {% comment %}...{% endcomment %}

              注释的内容不会在模板渲染时输出。

{# ... #}用这种语法的注释不能跨越多行, 这个限制是为了提高模板解析的性能;

{% comment %}模板标签实现多行注释;

时间: 2024-07-31 04:41:58

Django模板系统(Template System)——之模板语言1的相关文章

Django 模板系统(template)

介绍 官方文档 常用语法 只需要记两种特殊符号: {{  }} 和  {% %} 变量相关的用{{}} 逻辑相关的用{%%} 变量 {{ 变量名 }} 变量名由字母数字和下划线组成. 点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值. 几个例子: view中代码: def template_test(request): l = [11, 22, 33] d = {"name": "alex"} class Person(object): def __ini

第四章:Django 的模板系统(转)

在之前的章节中,你可能觉得例子中视图返回文本有点不妥.即是, HTML 是直接写在 Python 代码中的. 这种做法会导致这些问题: 要做任何设计上的更改就必须改写 Python 代码.网站的设计风格的更变一般来说会比更改后台的 Ptyhon 代码来得频繁,因此如果能够更改设计而不用更改 Python 变得尤为方便. 2 Python 代码编写和 HTML 设计是两项不同的工作,大多数专业的网站开发环境都将他们分配给不同的人员(甚至不同部门)来完成.设计人员和 HTML/CSS 编写人员都不应

Django模板系统详解

你可能已经注意到我们在例子视图中返回文本的方式有点特别.也就是说,HTML被硬性地直接写入 Python代码之中. 这种处理会导致一些问题: § 对页面设计的进行任何改变都必须对 Python代码进行相应的修改.站点设计的修改往往比底层Python代码的修改要频繁得多,因此如果可以在不进行 Python代码修改的情况下变更设计,那将会方便得多. § Python代码编写和 HTML 设计是两项不同的工作,大多数专业的网站开发环境都将他们分配给不同的人员(甚至不同部门)来完成.设计人员和 HTML

Django——模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)

阅读目录(Content) 模板语法之变量 模板之过滤器 default length filesizeformat date slice truncatechars safe 模板之标签 自定义标签和过滤器 模板继承 (extend) 模板语法之include 前言:当我们想在页面上给客户端返回一个当前时间,一些初学者可能会很自然的想到用占位符,字符串拼接来达到我们想要的效果,但是这样做会有一个问题,HTML被直接硬编码在 Python代码之中. 1 2 3 4 def current_dat

Django模板系统(非常详细)(后台数据如何展示在前台)

前面的章节我们看到如何在视图中返回HTML,但是HTML是硬编码在Python代码中的这会导致几个问题:1,显然,任何页面的改动会牵扯到Python代码的改动网站的设计改动会比Python代码改动更频繁,所以如果我们将两者分离开会更方便2,其次,写后台Python代码与设计HTML是不同的工作,更专业的Web开发应该将两者分开页面设计者和HTML/CSS程序员不应该编辑Python代码,他们应该与HTML打交道3,程序员写Python代码同时页面设计者写HTML模板会更高效,而不是一个人等待另一

flask模板的基本用法、模板语法、渲染模板、模板辅助工具

flask模板 在动态web程序中,视图函数返回的HTML数据往往需要根据相应的变量(比如查询参数)动态生成. 当HTML代码保存到单独的文件中时,我们没法再使用字符串格式化或拼接字符串的当时在HTML代码中插入变量,这时我们需要使用模板引擎(template engine).借助模板引擎,我们可以再HTML文件中使用特殊的语法来标记变量,这类包含固定内容和动态部分的可重用文件称为模板(template). 模板引擎的作用就是读取并执行模板中的特殊语法标记,并根据传入的数据将变量替换为实际值,输

Django框架-Django模板(template)系统

Django模板系统 官方文档 一.什么是模板? 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板. 二.模板语法分类 Django模板中主要有两种特殊的符号: {{ }}   &    {%  % } {{}} 表示变量,在模板渲染的时候替换成后台传过来的值,{% %}表示逻辑相关的操作. 2.1.模板语法之变量:语法为 {{ 变量名 }}: 在 Django 模板中遍历复杂数据结构的关键是句点字符  .(也就是点),用来获取对象的相应属性值 views.py def

Django的模板系统

模板系统介绍 模板系统的组成:HTML代码和逻辑控制代码 逻辑控制代码可以理解是django模板语言 django的模板语言组成 变量(使用双大括号来引用变量): 标签(tag)的使用(使用大括号和百分比的组合来表示使用tag) 模板继承 模板语言之变量 语法: {{var_name}} var_name 指变量名 使用模板语言之前: 先介绍template对象和Context对象 进入django的项目的交互环境 python manange.py shell >>> from dja

Django框架详细介绍---模板系统

Django模板系统 官方文档: https://docs.djangoproject.com/en/2.0/ref/templates/builtins/#std:templatetag-for 1.常见语法 两种页数符号 {{}} {% %} 1)变量 变量名由字母.数字.下划线组成:模板语言中用点"."来获取相应的属性 {{变量名}} 模板支持的写法: {# 取列表中的的第x个参数 #} {{ 列表.x }} {# 取字典中key的值 #} {{ 字典.key }} {# 取对象