制作网站的过程是对信息的,扁平化网站特效,网站的建设与维护步骤,微信开发者工具官方文档1. 模板介绍1.1 模板的功能产生html#xff0c;控制页面上展示的内容。模板文件不仅仅是一个html文件。模板文件包含两部分内容#xff1a;静态内容#xff1a;css、js、html。动态内容#xff1a;用于动态去产生一些页面内容。通过模板语言来产生。1.2 模板文件的使用通常…1. 模板介绍1.1 模板的功能产生html控制页面上展示的内容。模板文件不仅仅是一个html文件。模板文件包含两部分内容静态内容css、js、html。动态内容用于动态去产生一些页面内容。通过模板语言来产生。1.2 模板文件的使用通常是在视图函数中使用模板产生html内容返回给客户端。加载模板文件loader.get_template获取模板文件的内容产生一个模板对象。定义模板上下文RequeseContext给模板文件传递数据。模板渲染产生html页面内容render用传递的数据替换相应的变量产生一个替换后的标准的html内容。1.3 模板文件加载顺序首先去配置的模板目录下面去找模板文件。去INSTALLED_APPS下面的每个应用的templates去找模板文件前提是应用中必须有templates文件夹。2. 模板语言2.1 变量模板变量的作用是计算并输出变量名必须由字母、数字、下划线(不能以下划线开头)和点组成。语法如下{{变量}}当模版引擎遇到点如book.title会按照下列顺序解析1.字典book[title]2.先属性后方法将book当作对象查找属性title如果没有再查找方法title()3.如果是格式为book.0则解析为列表book[0]如果变量不存在则插入空字符串。在模板中调用方法时不能传递参数。例如{{book.btitile}}首先把book当成一个字典把btitle当成键名进行取值book[btitle]。把book当成一个对象把btitle当成属性进行取值book.btitle。把book当成一个对象把btitle当成对象的方法进行取值book.btitle。例如{{book.0}}首先把book当成一个字典把0当成键名进行取值book[0]。把book当成一个列表把0当成下标进行取值book[0]。如果解析失败则产出内容时用空字符串填充模板变量。使用模板变量时前面的困难是一个字典可能是一个对象还可能是一个列表。2.2 标签语法如下{%代码段%}for标签语法如下{%for item in 列表%}循环逻辑{{forloop.counter}}表示当前是第几次循环从1开始{%empty%}列表为空或不存在时执行此逻辑{%endfor%}if标签语法如下{%if ...%}逻辑1{%elif ...%}逻辑2{%else%}逻辑3{%endif%}比较运算符如下运算符左右两端不能紧挨变量或常量必须有空格。!布尔运算符如下andornot2.3 过滤器语法如下:使用管道符号|来应用过滤器用于进行计算、转换操作可以使用在变量、标签中。如果过滤器需要参数则使用冒号:传递参数。变量|过滤器:参数长度length返回字符串包含字符的个数或列表、元组、字典的元素个数。默认值default如果变量不存在时则返回默认值。data|default:默认值日期date用于对日期类型的值进行字符串格式化常用的格式化字符如下Y表示年格式为4位y表示两位的年。m表示月格式为01,02,12等。d表示日, 格式为01,02等。j表示日格式为1,2等。H表示时24进制h表示12进制的时。i表示分为0-59。s表示秒为0-59。value|date:Y年m月j日 H时i分s秒2.4 注释在模板中使用如下模板注释这段代码不会被编译不会输出到客户端 html注释只能注释html内容不能注释模板语言。单行注释语法如下{#...#}注释可以包含任何模版代码有效的或者无效的都可以。{#{ % if foo % }bar{ % else % } #}多行注释使用comment标签语法如下{%comment%}...{%endcomment%}3. 模板继承模板继承和类的继承含义是一样的主要是为了提高代码重用减轻开发人员的工作量。典型应用网站的头部、尾部信息。3.1 父模板如果发现在多个模板中某些内容相同那就应该把这段内容定义到父模板中。标签block用于在父模板中预留区域留给子模板填充差异性的内容名字不能相同。 为了更好的可读性建议给endblock标签写上名字这个名字与对应的block名字相同。父模板中也可以使用上下文中传递过来的数据。{%block 名称%}预留区域可以编写默认内容也可以没有默认内容{%endblock 名称%}3.2 子模板标签extends继承写在子模板文件的第一行。{% extends 父模板路径%}子模版不用填充父模版中的所有预留区域如果子模版没有填充则使用父模版定义的默认值。填充父模板中指定名称的预留区域。{%block 名称%}实际填充内容{{block.super}}用于获取父模板中block的内容{%endblock 名称%}4. HTML转义模板对所有传递的文字进行输出时合并以下字符自动转义。小于号 转换为 大于号 转换为 单引号 转换为 双引号 转换为 与符号 转换为 过滤器escape可以实现对变量的html转义默认模板就会转义一般省略。{{t1|escape}}过滤器safe局部转义告诉模板这个变量是安全的可以解释执行。{{data|safe}}标签autoescape设置一段代码都局部转义接受onoff参数。{%autoescape off%}...{%endautoescape%}模板硬编码中的字符串默认不会经过转义如果需要转义那需要手动进行转义。