1 ###Flask渲染Jinja2模板和传参: 2 1.如何渲染模板 3 *模板放在`templates`文件夹下,新建一个html文件。例如index.html 4 *从falsk中导入render_template函数#from flask import render_template 5 *在视图函数中,使用那个`render_template`
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 这是html文件显示的文字 9 </body> 10 </html>
1 from flask import Flask 2 #导入render_template模块 3 from flask import render_template 4 5 app = Flask(__name__) 6 7 @app.route('/') 8 def hello_world(): 9 return render_template('index.html')#使用模板中创建的html文件 10 11 if __name__ == '__main__': 12 app.run()
返回结果:
1 2.模板传参(2种方法) 2 *如果只有一个参数或者少量参数,直接在`render_template`函数中添加关键字参数就可以了 3 *如果是多个参数,可以把参数写在一个字典里,然后在`render_template`中使用**把字典转换成关键字参数传递进去,这样的代码更方便管理和使用。
1 3.在模板中,如果要使用一个变量,语法是{{}},例如{{params}} 2 4.访问模型中的属性或者字典,可以通过{{params.property}}的形式或者{{params['age']}}
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 这是一个html文件中出现的文字 9 <p>用户名:{{ username }}</p> 10 <p>性别:{{ sex }}</p> 11 <p>年龄:{{ age }}</p> 12 <hr> 13 <p>姓名:{{person.name}}</p> 14 <p>年龄:{{ person.age }}</p> 15 16 <hr> 17 <p>百度:{{websites.baidu }}</p> 18 <p>谷歌:{{websites.google }}</p> 19 </body> 20 </html>
1 from flask import Flask 2 from flask import render_template 3 4 app = Flask(__name__) 5 6 @app.route('/') 7 def hello_world(): 8 class Person(object): 9 name = u'hjc' 10 age = 20 11 12 p = Person() 13 #多个参数用字典表示 14 contex = { 15 'username' : u'hujc', 16 'sex' : u'男', 17 'age' :18, 18 'person' :p, 19 'websites':{ 20 'baidu':'www.baidu.com', 21 'google':'www.google.com' 22 } 23 } 24 #参数少,可以现在下面 25 # return render_template('index.html',username='hujc',sex='男',age=18) 26 return render_template('index.html',**contex) 27 # return 'Hello World!' 28 29 if __name__ == '__main__': 30 app.run(debug=True)
返回结果: