1. 模版
jinjia2模版语法
flask使用了但是它可以单独使用
1.支持括号调用
2.支持中括号取值
简单来说就是python的语法 都可以直接使用
1.1 渲染变量
1.2 逻辑判断
1.3 字符串类型的标签渲染
jinjia2处理了xss攻击
from flask import Flask, render_template
app = Flask(__name__)
app.debug = True
@app.route('/')
def index():
s = "<input type='text' value='姓名'>"
a = 10
return render_template('index.html', s=s, a=a)
if __name__ == '__main__':
app.run()
第一种方式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
# 直接渲染变量
<h1>{{ a }}</h1>
<br>
# 第一种方式可以像django一样
<h3>{{ s|safe }}</h3>
</body>
</html>
第二种方式
from flask import Flask, render_template,Markup
# 导入Markup
app = Flask(__name__)
app.debug = True
@app.route('/')
def index():
# 将字符串包装成Markup对象,就可以直接渲染
s = Markup("<input type='text' value='姓名'>")
a = 10
return render_template('index.html', s=s, a=a)
if __name__ == '__main__':
app.run()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
# 直接渲染变量
<h1>{{ a }}</h1>
<br>
<h3>{{ s }}</h3>
</body>
</html>
2. Django和jinjia2处理XSS攻击的原理
原理:使用了html特殊字符的替换,把字符串中的标签符号都用了特殊字符替换
只要在html里写,就会在浏览器渲染成 <猫猫>
<猫猫>
但是在html中写,就会被识别成标签
<猫猫>