Django笔记--Django的模板语言 我就是我 2022-12-08 14:25 146阅读 0赞 ## Django笔记–Django的模板语言 ## Django的模板语言大致可以分成两种:与变量相关的和与逻辑相关的 ### 变量相关 ### 变量相关的基本语法:\{ \{ \}\} 变量相关模板中最常用的写法: { { list.0 }} <!--代表取列表list中的第一个参数--> { { dict.name }} <!--代表取字典dict中的key为name的value值--> { { object.name }} <!--代表取object对象中的name属性的值--> { { object.happy }} <!--代表取object对象中引用happy()方法的结果--> #### Filters(过滤器) #### Django模板语言提供的过滤器有大致约60种,以下只记录常见的部分。 过滤器的基本语法:\{ \{ value|filters\_name:参数 \}\} ##### 常见的过滤器 ##### **1.defult** 作用:如果一个变量是false或者为空,就会使用给定的默认值,否则使用变量的值 参数:默认值 语法:\{ \{ value|default:“xx” \}\} **2.length** 作用:返回值的长度,作用于字符串和列表 语法:\{ \{ value|length \}\} **3.filesizeformat** 作用:将文件大小值进行格式化 语法:\{ \{ value|filesizeformat \}\} **4.size** 作用:切片 参数:开始切片的位置,结束切片的位置 语法:\{ \{ value|slice:“xx:xx” \}\} **5.date** 作用:将时间值进行格式化 参数:指定的时间格式 语法:\{ \{ value|truncatechars:xx \}\} **6.safe** 作用:关闭Django的自动转义 语法:\{ \{ value|safe \}\} **7.truncatechars** 作用:以单个字符为单位,对字符串进行截取。若字符串的长度大于截取的字符串,则剩余的部分字符串会用省略号表示 参数:截取的字符数 语法:\{ \{ value|truncatechars:xx \}\} 注意:省略号的三个点也算入截取的字符数中 **8.truncatewords** 作用:以一个单词为单位,对字符串进行截取 参数:截取的字符数 语法:\{ \{ value|truncatewords:xx \}\} 注意:该方法的原理是根据空格来进行判断,因此该方法通常对英文有效,对中文作用不大。 **9.cut** 作用:移除value中给定的字符串 参数:移除的字符串 语法:\{ \{ value|join:“xx” \}\} **10.join** 作用:使用字符串对列表进行拼接 参数:拼接使用的字符串 语法:\{ \{ valie|join:“xx” \}\} **11.timesince** 作用:返回曾经的时间差 参数:指定的时间(默认值为当前时间) 语法:\{ \{ value|timesince:xx \}\} **12.timeuntil** 作用:返回未来时间差 参数:指定的时间(默认值为当前时间) 语法:\{ \{ value|timeuntil:xx \}\} ##### 自定义过滤器 ##### 当内置的过滤器无法满足时,可以尝试自定义过滤器。 语法: 在python文件中函数前添加的装饰器:@register.filter() {% load python文件 %} {% 变量|函数名称 参数 %} 第一次创建自定义过滤器的步骤: 1-在app的目录下创建一个名为templatetags的python包,并在新创建的python包中创建一个新的python文件(图中的为myfilters1.py) ![在这里插入图片描述][20200920124248441.png_pic_center] 3-在python文件中按照格式注册一个自定义的filter(图中创建了一个名为add\_str的自定义过滤器) ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Njc5MTk0Mg_size_16_color_FFFFFF_t_70_pic_center] 4-在HTML页面使用时该过滤器时载入python文件 ![在这里插入图片描述][20200920125006634.png_pic_center] 5-如果是第一次创建templatetags包,则需要重启Django项目(templatetags包是新创建的包,在上次启动Django项目的时候并没有加载,因此需要重新启动Django项目) ### 逻辑相关 ### 逻辑相关的基本语法:\{% %\} #### 常见基本逻辑 #### **1.for逻辑** 作用:for循环 语法: {% for xx in xx %} {% empty %} <!--可有可无。如果循环的结果为空时,则会执行empty--> {% endfor %} for循环中的参数: <table> <tbody> <tr> <th>参数</th> <th>作用</th> </tr> <tr> <td>forloop.counter</td> <td>当前循环的索引值(参数默认为1)</td> </tr> <tr> <td>forloop.recounter</td> <td>当前循环的倒序索引值(参数默认为1)</td> </tr> <tr> <td>forloop.first</td> <td>判断当前循环是否为第一次循环</td> </tr> <tr> <td>forloop.last</td> <td>判断当前循环是否为最后一次循环</td> </tr> <tr> <td>forloop.parentloop</td> <td>本层循环的外层循环</td> </tr> </tbody> </table> **2.if逻辑** 作用:if判断(不支持连续判断) 语法: {% if xx %} {% elif xx %} <!--可有可无--> {% else %} <!--可有可无--> {% endif %} **3.with逻辑** 作用:定义一个中间变量。简单的说就是对某个变量起一个别名 语法: {% with xx as xx %} {% endwith %} **4.母版继承** 作用:重复率高的HTML页面可以采用母版 语法: <!--母版--> {% block 区块名称 %} <!--设置区块位置--> {% endblock %} <!--子版--> {% extend 'xx.html' %} <!--子版继承母版--> {% block 区块名称 %} <!--编写区块内容--> 区块内容 {% endblock %} **5.组件** 作用:将常用的页面内容组件起来,和母版继承有点类似。 语法: {% include 'xx.html' %} **6.静态文件** 作用:能够获取静态文件的STATIC\_URL。 语法: {% load static %} {% static '相对路径' %} **7.自定义simple\_tag** 作用:和自定义的过滤器大同小异,但更加灵活(可以接受更多参数)。使用步骤参考自定义过滤器的步骤。 语法: 在python文件中函数前添加的装饰器:@register.simple_tag() {% load python文件 %} {% 函数名称 参数 %} **8.includsion\_tag** 作用:用于返回一个html代码片段(可以接受参数,并返回一个字典)。使用步骤参考自定义过滤器的步骤。 语法: 在python文件中函数前添加的装饰器:@register.inclusion_tag() {% load python文件 %} {% 函数名称 参数 %} 先记录这点…… [20200920124248441.png_pic_center]: /images/20221123/f98464782c0d4bb39d5bb474d2521c76.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Njc5MTk0Mg_size_16_color_FFFFFF_t_70_pic_center]: /images/20221123/bb77b791a7924fc08debc0aeb998056f.png [20200920125006634.png_pic_center]: /images/20221123/9651b532bb4b4f96806332f83f257511.png
还没有评论,来说两句吧...