ps手机网站页面设计,江门网站建设推广平台,牡丹江网页制作公司,开发一款app软件需要多少钱目录
一、常用语法
二、模版语法之变量
三、模板之过滤器(Filters)
【1】default
【2】length
【3】filesizeformat
【4】slice
【5】date
【6】safe
【7】truncatechars
【8】其它过滤器#xff08;了解#xff09;
四、模版之标签
【1】for标签
【2】if 标签…目录
一、常用语法
二、模版语法之变量
三、模板之过滤器(Filters)
【1】default
【2】length
【3】filesizeformat
【4】slice
【5】date
【6】safe
【7】truncatechars
【8】其它过滤器了解
四、模版之标签
【1】for标签
【2】if 标签
【3】with
【4】csrf_token
五、模版导入和继承
【1】模版导入
【2】模版继承 一、常用语法
只需要记两种特殊符号
{{ }}和 {% %}
变量相关的用{逻辑相关的用{%%}
二、模版语法之变量
在Django的模板语言中按此语法使用 {{ 变量名 }}。当模版引擎遇到一个变量它将计算这个变量然后用结果替换掉它本身。变量的命名包括任何字母数字以及下划线 (_)的组合。 变量名称中不能有空格或标点符号。在模板中取值的时候使用的是点语法(.)模板中得函数调用的时候不要加括号自动加括号你只需要写函数名Python的数据类型基本都支持放到模板中使用
模板中支持的写法
{# 取l中的第一个参数 #}
{{ l.0 }}
{# 取字典中key的值 #}
{{ d.name }}
{# 取对象的name属性 #}
{{ person_list.0.name }}
{# .操作只能调用不带参数的方法 #}
{{ person_list.0.dream }}
三、模板之过滤器(Filters)
过滤器给我们提供的有六十多个但是我们只需要掌握10个以内即可。
语法
{{obj|filter__name:param}} 变量名字|过滤器名称变量
【1】default
如果一个变量是false或者为空使用给定的默认值。否则使用变量的值。
{{ value|default:nothing}}
如果value没有传值或者值为空的话就显示nothing
【2】length
返回值的长度。它对字符串和列表都起作用。
{{ value|length }}
返回value的长度 如 value[a, b, c, d]的话就显示4。
【3】filesizeformat
将值格式化为一个 “人类可读的” 文件尺寸 例如 13 KB, 4.1 MB, 102 bytes, 等等。
{{ value|filesizeformat }}
如果 value 是 123456789输出将会是 117.7 MB。
【4】slice
切片 如果 value”hello world”
{{ value|slice:2:-1}}
【5】date
格式化 如果 valuedatetime.datetime.now()
{{ value|date:Y-m-d H:i:s}}
【6】safe
Django的模板中会对HTML标签和JS等语法标签进行自动转义原因显而易见这样是为了安全。 但是有的时候我们可能不希望这些HTML元素被转义比如我们做一个内容管理系统后台添加的文章中是经过修饰的这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式 如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义。
比如value 点我 valuea href点我/a {{ value|safe}}from django.utils.safestring import mark_safe
res mark_safe(h1HELLO WORLD/h1) 【7】truncatechars
如果字符串字符多于指定的字符数量那么会被截断。 截断的字符串将以可翻译的省略号序列(“...”)结尾。参数截断的字符数 {{ value|truncatechars:9}} 【8】其它过滤器了解 过滤器 描述 upper 以大写方式输出 add 给value加上一个数值 addslashes 单引号加上转义号 capfirst 第一个字母大写 center 输出指定长度的字符串把变量居中 cut 删除指定字符串 date 格式化日期 default 如果值不存在则使用默认值代替 default_if_none 如果值为None, 则使用默认值代替 dictsort 按某字段排序变量必须是一个dictionary dictsortreversed 按某字段倒序排序变量必须是dictionary divisibleby 判断是否可以被数字整除 escape 按HTML转义比如将””转换为”lt” filesizeformat 增加数字的可读性转换结果为13KB,89MB,3Bytes等 first 返回列表的第1个元素变量必须是一个列表 floatformat 转换为指定精度的小数默认保留1位小数 get_digit 从个位数开始截取指定位置的数字 join 用指定分隔符连接列表 length 返回列表中元素的个数或字符串长度 length_is 检查列表字符串长度是否符合指定的值 linebreaks 用或标签包裹变量 linebreaksbr 用标签代替换行符 linenumbers 为变量中的每一行加上行号 ljust 输出指定长度的字符串变量左对齐 lower 字符串变小写 make_list 将字符串转换为列表 pluralize 根据数字确定是否输出英文复数符号 random 返回列表的随机一项 removetags 删除字符串中指定的HTML标记 rjust 输出指定长度的字符串变量右对齐 slice 切片操作 返回列表 slugify 在字符串中留下减号和下划线其它符号删除空格用减号替换 stringformat 字符串格式化语法同python time 返回日期的时间部分 timesince 以“到现在为止过了多长时间”显示时间变量 timeuntil 以“从现在开始到时间变量”还有多长时间显示时间变量 title 每个单词首字母大写 truncatewords 将字符串转换为省略表达方式 truncatewords_html 同上但保留其中的HTML标签 urlencode 将字符串中的特殊字符转换为url兼容表达方式 urlize 将变量字符串中的url由纯文本变为链接 wordcount 返回变量字符串中的单词数
四、模版之标签
标签看起来像是这样的 {% tag %}标签比变量更加复杂一些在输出中创建文本一些通过循环或逻辑来控制流程一些加载其后的变量将使用到的额外信息到模版中。一些标签需要开始和结束标签 例如{% tag %} ...标签 内容 ... {% endtag %}
【1】for标签
遍历每一个元素 {% for person in person_list %}p{{ person.name }}/p
{% endfor %}# 可以利用{% for obj in list reversed %}反向完成循环。 遍历一个字典 {% for key,val in dic.items %}p{{ key }}:{{ val }}/p
{% endfor %}{% for foo in d.keys %}p{{ foo }}/p
{% endfor %}{% for foo in d.values %}p{{ foo }}/p
{% endfor %}{% for foo in d.items %}p{{ foo }}/p
{% endfor %} 注循环序号可以通过forloop显示
# for 标签带有一个可选的{% empty %} 从句以便在给出的组是空的或者没有被找到时可以有所操作。
{% for person in person_list %}p{{ person.name }}/p{% empty %}psorry,no person here/p
{% endfor %}
【2】if 标签 {% if %}会对一个变量求值如果它的值是True存在、不为空、且不是boolean类型的false值对应的内容块会输出。if语句支持 and 、or、、、、!、、、in、not in、is、is not判断。 {% if num 100 or num 0 %}p无效/p
{% elif num 80 and num 100 %}p优秀/p
{% else %}p凑活吧/p
{% endif %} 【3】with
定义一个中间变量多用于给一个复杂的变量起别名。注意等号左右不要加空格。
d {username:kevin,age:18,info:这个人有点意思,hobby:[111,222,
333,{info:NB}]}# with起别名
{% with d.hobby.3.info as nb %}p{{ nb }}/p在with语法内就可以通过as后面的别名快速的使用到前面非常复杂获取数据的方式p{{ d.hobby.3.info }}/p
{% endwith %}{% with totalbusiness.employees.count %}{{ total }} employee{{ total|pluralize }}
{% endwith %}
不要写成as
【4】csrf_token
{% csrf_token%}
五、模版导入和继承
【1】模版导入
语法{% include 模版名称 %}如{% include adv.html %}
母板
!DOCTYPE html
html langen
headmeta charsetUTF-8meta http-equivx-ua-compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1titleTitle/title{% block page-css %}{% endblock %}
/head
bodyh1这是母板的标题/h1{% block page-main %}{% endblock %}
h1母板底部内容/h1
{% block page-js %}{% endblock %}
/body
/html 注意我们通常会在母板中定义页面专用的CSS块和JS块方便子页面替换。 【2】模版继承
在子页面中在页面最上方使用下面的语法来继承母板。
{% extends layouts.html %} 块(block)
通过在母板中使用{% block xxx %}来定义块。在子页面中通过定义母板中的block名来对应替换母板中相应的内容。
{% block page-main %}p世情薄/pp人情恶/pp雨送黄昏花易落/p
{% endblock %}
组件
可以将常用的页面内容如导航条页尾信息等组件保存在单独的文件中然后在需要使用的地方按如下语法导入即可。
{% include navbar.html %}