Django框架08:模板定义与继承

2018年07月14日 Django 浏览(323) 评论(0)

简介定义模板1.模板语言包括 ①变量。 ②标签 { % 代码块 % }。 ③过滤器。 ④注释{# 代码或html #}。2.变量 语法:{{variable}} ①当模版引擎遇到一个变量,将计算这个变量,然后将结果输出。 ②变量名必须由字母、数字、下划线(不能以下划线开头)和点组成。...

定义模板

1.模板语言包括
    ①变量。
    ②标签 { % 代码块 % }。
    ③过滤器。
    ④注释{# 代码或html #}。

2.变量
    语法:

{{ variable }}

    ①当模版引擎遇到一个变量,将计算这个变量,然后将结果输出。
    ②变量名必须由字母、数字、下划线(不能以下划线开头)和点组成。
    ③当模版引擎遇到点("."),会按照下列顺序查询:
        字典查询,例如:foo["bar"]。
        属性或方法查询,例如:foo.bar。
        数字索引查询,例如:foo[bar]。
    ④如果变量不存在, 模版系统将插入(空字符串)。
    ⑤在模板中调用方法时不能传递参数。

3.在模板中调用对象的方法
   ①在models.py中定义类BlogInfo。

from django.db import models

class BlogInfo(models.Model):
     ...
    def showName(self):
        return self.hname

   ②在views.py中传递BlogInfo对象。

from django.shortcuts import render
from models import *

def index(request):
    hero = HeroInfo(hname='abc')
    context = {'hero': hero}
    return render(request, 'temtest/detail.html', context)

    ③在模板detail.html中调用。

{{hero.showName}}

4.标签
    语法:{ % tag % }。
    作用:
        在输出中创建文本。
        控制循环或逻辑。
        加载外部信息到模板中供以后的变量使用。
    ①for标签

{ %for ... in ...%}
    # 循环逻辑
{{forloop.counter}} # 表示当前是第几次循环
{ %empty%}
    # 给出的列表为或列表不存在时,执行此处
{ %endfor%}

    ②if标签

{ %if ...%}
    # 逻辑1
{ %elif ...%}
    # 逻辑2
{ %else%}
    # 逻辑3
{ %endif%}

    ③comment标签

{ % comment % }
    # 多行注释
{ % endcomment % }

    ④include:加载模板并以标签内的参数渲染。

{ % include "foo/bar.html" % }

    ⑤url:反向解析

{ % url 'name' p1 p2 %}

    ⑥csrf_token:这个标签用于跨站请求伪造保护。

{ % csrf_token %}

    ⑦布尔标签:and、or,and比or的优先级高。
    ⑧block、extends:详细描述在模板继承。

常用过滤器

1.capfirst
    把第一个字母改为大写。

{{value|capfirst}}

2.center,ljust,rjust
    把字符串的内容居中,靠左,靠右对齐。

{{value|center:'12'}}

3.cut
    把字符串中指定的字符删除。

{{value|cut:''}}

4.date
    指定日期时间的输出格式。

{{value|date:'d M Y'}}

5.linebreaksbr
    置换\n成为<br/>。

{{value|linebreaksbr}}

6.linenumbers
    为每一行字符串加上行号。

{{value|linenumbers}}

7.lower
    把字符串转换为小写。

{{value|lower}}

8.random
    把前面串行元素使用随机的方式任选一个输出。

{{value|random}}

9.striptags
    把所以的HTML标记全部删除。

{{value|striptags}}

10.truncatechars
    提取指定字数的字符。

{{value|truncatechars:120}}

11.upper    
    把字符串转为大写。

{{value|upper}}

12.wordcount
    计算字数。

{{value|wordcount}}

13.addslashes
    为字符串需要的地方加上转义字符。

{{value|addslashes}}

14.default
    如果没有值,就使用默认值。

{{value|default:'没有信息'}}

15.dictsort
    为字典形式内容的变量排列顺序。

{{value|distort:'name'}}

16.dictsortreversed
    上一指令的反向顺序。

17.divisibleby
    测试数值数据是否可被指定的数整除。

{{value|divisibleby:5}}

18.escape
    把字符串中的HTML标记变成显示用的字符串。

[{value|escape}}

19.filesizeformat
    以人们习惯的方式显示文件大小的格式(KB,MB)。

{{value|filesizeformat}}

20.first,last
    只取出列表数据的第一个,最后一个。

{{value|first}}

21.length
    返回列表数据的长度。

{{value|length}}

22.length_is
    测试数据是否为指定长度。

{{value|length_is:"3"}}

23.floatformat
    以指定的浮点数格式显示数据。

{value|floatformat:3}}

24.linebreaks
    将文字内容的换行符号转换为HTML的<br>和<p>。

{{value|linebreaks}}

25.safe
    标记字符串为安全的,不需要再处理转义字符。

{{value|safe}}

26.slugify
    把前面的字符串空格变成'-',让此字符串可以安全地放在网址上。


{{value|slugify}}

模板继承

1.模板继承   
    ①模板继承可以减少页面内容的重复定义,实现页面内容的重用。
    ②典型应用:网站的头部、尾部是一样的,这些内容可以定义在父模板中,子模板不需要重复定义。
    ③block标签:在父模板中预留区域,在子模板中填充。
    ④extends继承:继承,写在模板文件的第一行。
    ⑤定义父模板base.html。

{ %block block_name%}
    # 这里可以定义默认值
    # 如果不定义默认值,则表示空字符串
{ %endblock%}

    ⑥定义子模板index.html。

{ % extends "base.html" %}
    # 在子模板中使用block填充预留区域
{ %block block_name%}
    # 实际填充内容
{ %endblock%}

2.说明
    ①如果在模版中使用extends标签,它必须是模版中的第一个标签。
    ②不能在一个模版中定义多个相同名字的block标签。
    ③子模版不必定义全部父模版中的blocks,如果子模版没有定义block,则使用了父模版中的默认值。
    ④如果发现在模板中大量的复制内容,那就应该把内容移动到父模板中。
    ⑤使用可以获取父模板中block的内容。
    ⑥为了更好的可读性,可以给endblock标签一个名字。

{ % block block_name %}
    # 区域内容
{ % endblock block_name %}

郑重声明:

(原创博文,转载请注明来自 蒋振飞的博客!本文链接:点击我获取我的链接)

若对你有帮助,不妨扫一扫右侧的二维码打赏我一下吧 ^_^

评论区域

评论列表

智慧如你,速度抢下沙发吧 !

更多文章目录