文章目录
前言:
学习模板的目的:用于前台展示 使用 vue
页面跳转由后台控制
前后端分离 前端 template 需要导入render_template
一、简单模板
from flask import Flask,render_template
app = Flask(__name__)
@app.route('/')
def login():
# 注意模板的路径,如果是在templates的demo文件夹下,这需要写成demo/index.html
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input id="kw" name="wd" class="s_ipt" value maxlength="255" autocomplete="off">
</body>
</html>
注意:一定要将存放模板的文件夹设置为templates(默认原生的文件名)
如果要更改默认的文件夹名templates,需要在此处指定,且性创建的文件名要和这的一致
app = Flask(__name__,template_folder='template')
二、模板传参
可以传指定的参数,交由前端页面进行展示
若传多个参数,可以将多个参数写成字典格式进行传递
return render_template('index.html',context=context)
使用
**context
可以做到拆包的功能(见下)
三、jinja2内置过滤器
Jinja2模板过滤器 相当于一个函数,将变量传入到过滤器中,然后过滤器根据自己的功能,再返回到响应的值,之后再讲结果渲染到页面中。
# 绑定路由
@app.route('/')
def index():
context = {
'username':'xiaohuahua',
'age':-18,
'city':'hebei',
'es':"<script>alert('hello')</script>",
"books":['java','python','html'],
'book':{
'java':4},
'shuzhi':89.0,
'kong':' ioi ',
'chang':'中国 河北省 廊坊市'
}
return render_template('jinjia_demo.html',**context)
<p>首页</p>
<h1>{
{ username }}</h1>
<!-- 过滤器 | 左边是待处理的参数,右侧是函数 -->
<!-- abs过滤器 返回数值的绝对值 -->
<h1>{
{ age|abs }}</h1>
<!-- 默认过滤器 -->
<h1>{
{ name|default('这个人很懒,什么都没有留下')}}</h1>
<!-- <h1>{
{ es }}</h1>-->
<!-- 关闭转义功能-->
{% autoescape off %}