flask jinjia2关于模版介绍和路径查找

一、jinjia2是一个现代的,设计者友好的,仿照 Django 模板的 Python 模板语言。 它速度快,被广泛使用,并且提供了可选的沙箱模板执行环境保证安全:

      特性:

  • 沙箱中执行
  • 强大的 HTML 自动转义系统保护系统免受 XSS
  • 模板继承
  • 及时编译最优的 python 代码
  • 可选提前编译模板的时间
  • 易于调试。异常的行数直接指向模板中的对应行。
  • 可配置的语法

二、关于路径模版路径传递参数

from flask import Flask,request,url_for,render_template

app = Flask(__name__)
#解决传递参数的问题{{xxxx}}
@app.route('/')
def hello():
  return render_template("para.html",para="金甲")


#解决访问参数项过多的问题,将所有参数局放在一个字典中,然后字典传参数的时候,使用**
@app.route('/test')
def hello1():
  content = {
  "uname":"xiaoming",
  "age":18,
  "childrens":{
  "name":"hanhanmeimei",
  "city":"beijing",
    }
  }
  return render_template("para.html",**content)

if __name__ == '__main__':
  app.run(port = 5008)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h4>金甲参数传递的演示</h4>
<p><font color="blue">黄沙百战穿{{ para }}</font></p>
<p>我叫{{ uname }}</p>
<p>年龄:{{ age }}</p>
<!--获取字典的方式-->
<p>我的同学{{ childrens.name }}</p>
<p>来自{{ childrens["city"] }}</p>
</body>
</html>
 

三、jinjia2 定义template模版路径

from flask import Flask,request,url_for,render_template

app = Flask(__name__,template_folder="C:/test/template2")
@app.route('/')
def hello():
  uname = "zhangsan"
  return render_template("index.html",content=uname)

@app.route('/path')
def hello1():
  uname = "lisi"
  #指定模版路径/template/new/index1.html
  return render_template("/new/index1.html",content=uname)
@app.route('/path1')
def hello2():
  uname = "wangwu"
# 自定义模版路径/test/template2/index2.html
   return render_template("index2.html",content=uname)
if __name__ == '__main__':
  app.run(port = 5007)

   模版默认路径index:

 

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>金甲系统</title>
</head>
<body>
<h4>金甲模版</h4>
<p>欢迎<font color="red">{{ content }}</font>来访问我的博客</p>
</body>
</html>


修改模版默认路径:/new/index1:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h4>金甲2模版</h4>
<p>欢迎<font color="red">{{ content }}</font>欢迎再次来访问我的博客</p>
</body>
</html>
自定义模版路径:/test/template2/index2.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h4>金甲3模版</h4>
<p>欢迎<font color="red">{{ content }}</font>欢迎再次来访问我的博客</p>
</body>
</html>

四、模版中使用url_for
from flask import Flask,url_for,render_template

app = Flask(__name__)

@app.route('/')
def shouye():
return render_template("index1.html")

@app.route('/login1')
def login1():
return render_template("login1.html")

@app.route('/login1')
def login2():
return render_template("login1.html")

@app.route('/login1/<name>')
def login3(name):
print(name)
return render_template("login1.html")

if __name__ == '__main__':
app.run(port = 5009)
登录:login1
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
用户名:<input type="text" value="">
密 码:<input type="text" value="">
<input type="submit" value="提交">
</body>
</html>
首页:index1
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h4>首页1</h4>
{# 方法一:路径传参 #}
<a href="/login1">登录1</a>

<h4>首页2</h4>
{# 方法二:路径传参
<!--url_for(" 函数名")-->
<a href="{{ url_for("login1")}}">登录2</a>

<h4>首页3</h4>
{# 方法三:带参数的路径传参 #}
<!--url_for(" 函数名,参数名")-->
<a href="{{ url_for("login1",name="huahua")}}">登录3</a>
</body>
</html>
 

 

posted @ 2019-11-30 15:23  微风轻哨  阅读(665)  评论(0编辑  收藏  举报