flask模板语法与继承

目录

1.语法:

 2.dict类型数据渲染:

 3.list/tuple类型数据的渲染

 4.list/tuple嵌套dict复杂类型数据渲染

5.模板标签

 for循环体内的变量

6.添加注释:

自定义过滤器:

模板全局函数:

 模板的继承与包含: 继承extends:

包含include: 

消息闪现:


模板中变量的使用:

1.语法:

{{value}}   规则是可以变更的也可以这样写{{{value}}},不过没必要。

 添加你想要的数据,然后再index.html中进行渲染

 

 这是最终展现在页面上的内容

 

 2.dict类型数据渲染:

{{object.attribute}}或{{object['attribute']}}

 3.list/tuple类型数据的渲染

 元组或者列表可直接通过他们的索引就可以直接找到相应的关系

 4.list/tuple嵌套dict复杂类型数据渲染

先通过列表的索引找到你想要查找的数据,再去选择里面相对应的内容就可以了。

 

5.模板标签

语法:{{% tag%}}

可以用 if else  break  continue  for循环,标签中可包含if 条件语句判断

例如:{{% if  condition_a%}}

                       满足了条件a

           {{% else if condition_b%}}

                        满足了条件b

            {{% else if%}}

                        都不满足就执行最后一个

           {{% endif %}}

有开头就肯定有结尾,写完头if,记得先写上endif,再写里面的内容

for循环:

{{% for key,value in data.items() %}}

         {{key}}:{{value}}

{{% else %}}

       条件不满足执行这里

{{% endfor  %}}

 for循环体内的变量

loop.first:如果是第一次迭代,就是True

loop.last: 如果是最后一次迭代就是True

loop.length: 序列的长度

loop.cycle:在一串序列间期取值的辅助函数

如果想要每行都是不同的样式可以在style中设置两个颜色,一个为odd,一个为even

用的时候 直接在<p>标签中添加样式就可以

 如何在for循环中想要使用break/continue:

6.添加注释:

不会显示在浏览器的HTML中{# 我是注释 #}

去除HTML中多余空白

在块开始或者结束放置一个减号(-),不能有空格。

内置的判断条件:

defined/undefined- 变量是否被定义了

none- 变量是否为None

number/string- 数字/字符串的判断

even-odd- 奇偶数的判断

upper/lower- 大小写的判断

if标签中的其他逻辑控制:

比如:

and ,or ,

==,!=,

<,>,

<=,>=,

in,not in 

模板标签with:

with 块级作用域,只在这个块里面有效

{% with %}

        {}

{{% endwith %}}

raw标签:

{% raw %}

       这里面的内容会以字符串的格式显示出来

{% endraw %}

 过滤器的使用:

修改变量(如:格式化显示)

用管道符号(|)分割  {{name|striptags}}

可以链式调用  {{name|striptags|title}}

可以用圆括号来传递一个参数{{list|join(',')}}

 

 内置过滤器:

求绝对值:

{{value|abs}}

默认值的显示:

default(value,default_value='',boolean=False)

例如:{{value|default('默认值')}}

           {{value|d('默认值')}}

html转义:

{{value|escape}} 或 {{value|e}}

autoescape 为flase 是为了吧自动转义关掉。

 就是把h2的角标转义成字符

 富文本内容转义显示:

{{value|safe}}

倒序显示:

{{value|reverse}}

自定义过滤器:

@app.template_filter('reverse')

def reverse_filter('s')

        return s[::-1]

使用: {{ phone_number|reverse_filter }}

模板全局函数:

range([start]stop[,step])

dict(**items)f

cycler(*items)--可用于css的类名的循环

joer(sep=',')--可用于字符串的拼接

url_for解析函数(如:静态文件地址解析/链接跳转地址解析)

模板中的宏macro: 

 macro同样的模板代码写成函数并进行复用
            定义宏{% macro 宏名(参数) %}

           代码块{% endmacro %}

           导入宏{% import '宏文件' as 别名 %}

           使用宏{{ 别名.宏名(参数) }}

 也可以把宏写入单独的一个HTML文件中

        用的时候导入宏{% import 'form.html' as forms%}

调用的时候就像调用函数一样就行,比传参数是name,type是类型,value是默认值

 模板的继承与包含:
 继承extends:

extends继承是为了复用模板中的公共内容:

可变的内容包裹起来,重复的内容就还在里面
       {% block 名字 %}

       {% endblock %}

可写入html文件中,然后再用extends继承,中间的block就写你想要的内容

       子模板{% extends '父模板的名字'  %}

复用父类模板的使用:

        {% extends %}

        {% block header %}

                {{ super() }}

                <!--新的菜单内容-->

        {% enblock%}

当前页面的代码复用:

        <title>{% block  title %}{% endblock %}</title>

        <h1> {{self.title() }}</h1>

        {% block content%}

        {% endblock %}

包含include: 

 include在A、B、C页面都有就他页面没有这个
            {% include '文件夹/模板文件' %} 直接引用就可以了。

include的两个参数:

ignore missing  如果模板不存在,jinja2会忽略这条语句

with context/without context  是否携带当前上下文

消息闪现:

第一步:在视图中产生一个消息(提示/警告/错误)

flash(msg_content,msg_type)

msg_content:消息内容

msg_type:消息类型

第二部:在模板中展示消息

get_flashed_message(category_filter=['erro'])

category_filter:对产生的消息按类查询

 <ul class = flashes>

{% for category,message in get_flashes_mesage(woth_categories=true)%}

        <li class = '{{category}}'>{{message}}</li>

{% endfor %}

</ul>

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱喝可乐的宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值