本文主要是介绍Skr-Eric的Flask课堂(二)——Flask的模板Templates,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
模板 - Templates
1.什么是模板
模板 , 在Flask 中就是允许响应给用户看的网页
在模板中,允许包含"占位变量"来表示动态的内容
模板最终也会被解析成字符串再响应给客户端,这一过程通常称为"渲染"
Flask中的模板是依赖于 Jinja2 的模板系统
2.模板的设置
默认情况下,Flask会在程序文件夹中的 templates 的子文件夹中搜索模板
默认情况下,需要手动创建 templates 文件夹
3.模板的渲染
作用:在视图中,将模板文件(xx.html)渲染成字符串之后,再响应给客户端浏览器
函数:render_template('xxx.html')
return render_template('xxx.html')
4.模板中的语法(重难点)
1.变量
变量是一种特殊的占位符,告诉模板引擎该位置的值是从渲染模板时的数据中获取出来的。
在视图中 :
@app.route('/')
def index():
return render_template('xxx.html',变量1=值1,变量2=值2,..)
return render_template('xxx.html',name='laowang',age=35)
在模板中 :
{{变量名}}
<h1>{{name}}</h1>
2.过滤器
1.什么是过滤器
过滤器是允许在变量输出前改变变量的值
2.语法
{{变量|过滤器}}
Jinja2 模板中常见过滤器:
过滤器名 说明
capitalize 首字符变大写,其他变小写
lower 将值转换为小写
upper 将值转换为大写
title 将值中的每个单词首字符变大写
trim 去掉值两边的空格
3.标签
1.什么是标签
每个标签标示的是不同的服务器端的功能
2.常用标签
1. if 标签
1.基本if结构
{% if 条件 %}
{% endif %}
2.if ... else ... 结构
{% if 条件 %}
满足条件时要运行的代码
{% else %}
不满足条件时要运行的代码
{% endif %}
3.if ... elif ... elif ... else
{% if 条件1 %}
满足条件1,要运行的代码
{% elif 条件2 %}
满足条件2,要运行的代码
{% elif 条件3 %}
满足条件3,要运行的代码
{% else %}
以上条件都不满足的时候,要运行的代码
{% endif %}
2. for 标签
{% for 变量 in 元组|列表|字典 %}
{% endfor %}
在 Jinja2 模板的循环中,支持内部变量 - loop
loop作用:记载当前循环中的一些相关信息
loop 常用属性:
1. index
用法:loop.index
作用:记录当前循环的次数,从 1 开始记录
2. index0
用法:loop.index0
作用:同上,从0开始记录
3. first
用法:loop.first
作用:值为True,则表示当前循环是第一次循环
4. last
用法:loop.last
作用:值为True,则表示当前循环是最后一次循环
3. macro 标签 (宏)
1.作用
相当于是在模板中声明函数
2.语法
使用 {% macro %} 声明宏
{% macro 名称(参数列表) %}
xxxx xxxx
{% endmacro %}
3.在独立的文件中声明宏
1.创建 macro.html 模板文件
作用:定义项目中要用到的所有的宏
2.在使用的网页中,导入 macro.html
{% import 'macro.html' as macros %}
4. include 标签
将其他的模板文件包含到当前的模板文件中
语法:{% include 'xxx.html' %}
5.静态文件处理
1.什么是静态文件
在Flask中不能与服务器动态交互的文件都是静态文件
如:图片,css文件,js文件,音视频文件,...
<img src="images/a.jpg">
<link rel="" href="css/a.css">
<script src="js/a.js"></script>
<video src="mp4/a.mp4"></video>
<audio src="music/a.mp3"></audio>
2.静态文件的处理
1.所有的静态文件必须放在名为 static 的目录中
static目录要放在项目的根目录处
2.所有的静态文件必须通过 /static/ 路径访问
/static/images/a.jpg
/static 要到静态资源目录中继续搜索
6.静态文件地址的反向解析
url_for('static',filename='<file_path>')
ex:
url_for('static',filename='images/b041.jpg')
结果: /static/images/b041.jpg
7.模板的继承
1·什么是模板的继承
模板的继承类似于类的继承,如果一个模板中出现的内容来自于另一个模板的话,那么就可以使用继承的方式来简化开发
2.语法
1.父模板
需要定义出哪些东西在子模板中是可以被重写的
{% block 块名 %}
父模板中正常显示的内容
{% endblock %}
block:
1.在父模板中是可以正常显示的,没有任何影响
2.在字模板中是可以被重写的
2.子模板
1.需要指定继承自哪个父模板
{% extends '父模板名称' %}
2.重写父模板中对应的内容
{% block 块名 %}
此处编写的内容会覆盖掉父模板中同名block的内容
允许通过 {{super()}} 来调用父模板中的内容
{% endblock %}
想要看更多的课程请微信关注SkrEric的编程课堂
这篇关于Skr-Eric的Flask课堂(二)——Flask的模板Templates的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!