Flask的第三章,讲述的是关于Flask的模板
使用的是Jinja2来创建模板
使用return render_template就能渲染模板
第一个参数是模板的文件名,后续参数可以是一些要传递过去的数据
全局对象是所有的模板中都可以直接使用的对象,Jinja2在模板中提供了一些内置的全局函数
Flask也在模板中内置了两个全局函数
url_for()和get_flashed_message()
过滤器,格式一般是{{ name|title }}
也可以自定义过滤器,只要在视图函数前加上@app.template_filter()
局部模板
用include标签来插入一个局部模板
{ %include '_banner.html'% }
为了和普通模板区分开,局部模板的命名通常以一个下划线开始
之后提到了宏,对于这块我不是太理解,于是我让gpt进行了讲解
我们可以把Jinja2中的宏(macro)比喻成厨房里的“食谱”。
食谱的比喻
想象你在家里做饭,你有一个常用的食谱,比如“经典意大利面食谱”。这个食谱里列出了做意大利面的所有步骤和所需的材料,比如煮面、制作酱料、混合配料等等。每次你做意大利面时,你都可以按照这个食谱来做,无论是今天还是下个月,你的做法都是一致的。
Jinja2宏的类比
在Flask的模板引擎Jinja2中,宏就是这个“食谱”。你可以把一个宏想象成一个模板中的小函数,它帮助你重复使用一段HTML代码。就像食谱告诉你如何做菜一样,宏告诉你如何生成一段标准化的HTML代码。
示例
假设你有一个网页上经常用到的“用户信息卡片”,它的HTML结构是固定的。你可以定义一个宏来生成这个用户信息卡片的HTML,然后在不同的地方重复使用这个宏。这样,你就不需要每次都写重复的HTML代码,只需调用宏即可。
在创建宏时,我们使用marco和endmarco标签声明宏的开始和结束
使用时,需要使用import语句导入他
{% import 'macros.html' as macros %}
模板继承
基模板{%block content%} {%endblock%}
子模板{%block content%}
在子模板的开头{%extends 'base.html'%}
使用extends标签声明扩展基模板,它高速模板引擎当前模板派生自base.html
加载静态文件
一般使用url_for()来加载静态文件
<img src='"{{url_for('static',filename='avatar.jpg')}}">
Favicon是网站头像,需要放在static目录下,然后在html里进行声明
打算明天把第四章和第五章看完,Flask的基础知识应该也就完毕了
现在正在拿一个资源聚合网站做练手,最好也在明天和后天完工