应用场景:
- 内部传参与外部传参
内部传参指的是通过从HTML内部set参数,外部传参指的是通过py文件传参,前文描述过https://blog.youkuaiyun.com/LCY133/article/details/109080457 - 全局变量与局部变量
全局变量指的是在整个HTML中都会用到的,局部变量用with包裹起来,在局部起作用
语法:
{% set name='lcy' %}
那么以后就可以使用name来代替lcy这个值了
赋值语句创建的变量在其之后都是有效的,如果不想让一个变量污染全局环境,可以使用with语句来创建一个内部的作用域,将set语句放在其中,这样创建的变量只在with代码块中才有效
语法:
{% with %}
{% set foo = 42 %}
{{ foo }} foo is 42 here
{% endwith %}
或者:
{% with foo = 42 %}
{{ foo }}
{% endwith %}
比较外部传参与内部赋值的代码:
代码中会分别进行外部引入变量,全局变量set以及局部set
在局部set之前,如果使用了该变量,会使用外部的变量,全局set后,除局部外会使用该全局变量值,在使用局部set的部分使用局部变量值,局部过后依旧使用全局变量值。代码如下:
#! C:\Python\Python36
# -*- coding: utf-8 -*-
# @Time : 2020/10/19 10:53
# @Author : liuchengyong
# @File : setTest.py
# @Software: PyCharm
# 测试内部参数与外部参数
from flask import Flask,render_template
app = Flask(__name__)
@app.route('/')
def set_test():
context = {
'lcy': 123,
'xq':'小强',
'username':'mm'
}
return render_template('index.html',**context)
if __name__ == '__main__':
app.run(debug=True)
HTML代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>外部:{{ username }}</p>
<h1>{{ lcy }}</h1>
<h2>{{ xq }}</h2>
{% set username = '小雅' %}
<p>全局:{{ username }}</p>
{% with username = '局部小雅' %}
<p>局部:{{ username }}</p>
{% endwith %}
<p>全局:{{ username }}</p>
</body>
</html>