2024-09-16学习记录

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代码,只需调用宏即可。

gpt的代码示例

在创建宏时,我们使用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的基础知识应该也就完毕了

现在正在拿一个资源聚合网站做练手,最好也在明天和后天完工

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容