静态模板的使用
Jinjia2是Flask使用的html渲染模板,Jinjia原意为日本的神社,英文为temple,与模板的英文template相近,故取名jinjia。 首先先演示如何在flask代码中展示静态的html,方法是使用flask库中的render_template()方法,其参数为template(默认为template,也可以通过参数修改)文件夹中的“index.html”,通过这种方式,可以在进入指定UML之后,访问html页面。
@app.route('/')
def hello_world(): # put application's code here
return render_template("index.html")
👇index.html的html页面代码:
这是首页
渲染变量——传递参数
HTML中有些数据需要动态地从数据库中加载,不能直接写死在HTML页面中,在视图函数中可以将数据提取好,再通过Jinjia2传递参数的方式将数据在视图函数中通过render_template()(render的本意即为渲染)传递给HTML。在html中使用双花括号{
{ hobby }}即可使用变量,此处的hobby即为在视图函数中使用render_template传递过来的变量。此外,字典的键值和对象的属性在模板中都可以通过点(.)来传递, 还可以通过["属性名"]的方式传递, 二者的区别在于, 使用.先查看变量是否为字典, 再查看是否为对象, 都不是则返回undefined对象, 而使用方括号则字典和对象的寻找顺序相反.
class User:
def __init__(self, username, email):
self.username = username
self.email = email
@app.route('/variable')
def variable():
hobby = "游戏"
person = {
"name" : "张三",
"age" : 18
}
user = User("里斯","xx@qq.com")
return render_template("variable.html", hobby=hobby,person=person,user=user)
👆注意, 如果传递参数时, 名字出错了, 则在html页面不会显示, 推测是因为没有打开debug模式. 👇
我的兴趣爱好是:{
{ hobby }}
person的姓名是:{
{ person.name }}, person的年龄是{
{ person.age }}
user的用户名是:{
{ user["username"] }}, user的邮箱是{
{ user.email }}
此外, 还可以通过对字典使用**运算,使字典变成关键字参数. 其效果与上面的代码等同.
参考链接
发表评论