Flask学习之旅——2.5 include和set语句
前言
- 本文为《知了传课——控制语句》的学习笔记。
- 原文地址:第七节:include和set语句 - Python框架Flask基础教程 - 知了传课 (zlkt.net)
include标签
什么是include标签?
include
语句可以把一个模板引入到另外一个模板中,类似于把一个模板的代码copy到另外一个模板的指定位置include
语句可以让我们少写重复的代码,例如页面头部和底部是很多页面要用的样式,我们可以把这部分的代码提取到一个新文件里,然后使用include
语句调用就可以直接使用了,避免了每个页面都要重新写公共部分的情况发生。
语法
{% include 'header.html' %}
主体内容
{% include 'footer.html' %}
栗子
headers.html
<style>
样式
</style>
<div class="header">
<ul class="nav-group">
<li><a href="#">新闻</a></li>
<li><a href="#">音乐</a></li>
</ul>
</div>
footers.html
<style>
样式
</style>
<div class="footer">
<p>页面底部</p>
</div>
将公共部分提取出以后在调用的地方只需要用include
标签调用即可:
index.html
{% from 'macros/forms.html' import input %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>宏</title>
</head>
<body>
{% include 'index/headers.html' %}
<p>这是首页</p>
{% include 'index/footers.html' %}
</body>
</html>
如果还有一个详情页,那么只需要:
detail.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Detail</title>
</head>
<body>
{% include 'index/headers.html' %}
<p>这是详情页</p>
{% include 'index/footers.html' %}
</body>
</html>
赋值(set)语句
内部传参与外部传参
- 内部传参指的是通过从HTML内部
set
语句传参。 - 外部传参指的是通过py文件
**context
关键字传参。
全局变量与局部变量
-
全局变量
-
指的是在整个HTML中都会用到的
-
语法:
{% set name='lv' %}
以后就可以使用
name
来代替lv
这个值了,同时,也可以给他赋值为列表和元组:{% set navigation = [('index.html', 'Index'), ('about.html', 'About')] %}
-
-
局部变量
-
用with包裹起来,在局部起作用
-
语法:
{% with %} {% set foo = 42 %} {{ foo }} foo is 42 here {% endwith %}
也可以在
with
的后面直接添加变量,比如以上的写法可以修改成这样:{% with foo = 42 %} {{ foo }} {% endwith %}
这两种方式都是等价的,一旦超出
with
代码块,就不能再使用foo
这个变量了。
-
-
赋值语句创建的变量在其之后都是有效的
-
如果不想让一个变量污染全局环境,可以使用
with
语句来创建一个内部的作用域,将set
语句放在其中,这样创建的变量只在with
代码块中才有效。
栗子
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% set username = '小吕' %}
<p> 全局:{{ username }} </p>
{% with username = '局部小吕' %}
<p> 局部:{{ username }} </p>
{% endwith %}
<p> 全局:{{ username }} </p>
</body>
</html>
结果
全局:小吕
局部:局部小吕
全局:小吕