python中flask(四)

python中flask(四)

一个完整的网页一般都会包含大量的内容,如果仅仅使用之前的视图函数编写,会使代码变得既长又复杂,运行和维护起来都会很麻烦,这就需要模版了,在flask中,有着专有模版jinja2,简单来说,模版的存在简化了网页的编写,jinja2就是一种html文件。
我们使用前应该先建一个templates的文件夹,并将编写好的html文件放在其中,flask在运行的时候会自动搜索templates文件夹使用你引用的html文件,其中要注意的是:写好的python文件不要放在templates中,否则会无法正确跑的,python文件应该与templates文件夹同级才能正常运行。
1.jinja2简单结构:
首先我们需要了解jinja2模版的具体结构,之后是了解语法,毕竟html文件的编写方式与python的编码还是有着一定的差距。我们在pycharm中创建一个html5文件并命名,pycharm会自动给我们一个简单的模版,但在vsc里面就要自己写个开头才能自动补全。
在这里插入图片描述

上图就是html模版的基本结构,我们要做的,就是往这个模版里填充我们需要的东西即可。在前期,我们主要需要编写的部分是两个body中间的部分。
在写之前,需要简单了解一下html中的定界符,我们写出的命令要发挥作用少不了它的存在。简单来说可以分为三种,第一种是表达式,我们使用一些变量等的时候,需要用{{ }}来包含,第二种则是语句,一般用于我们写像if这样的循环的时候,需要用{% %},第三种则是我们需要解释相关语句的时候需要用到的注释,和python有些相似,使用的是{# #}。至于其他的一些特殊的字母符号,会在之后慢慢遇到,想要详细了解可以查一下html的结构。

2.模版渲染:
我们首先来尝试将html文件应用到python文件中。首先写一个简单的html文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
    <p>Hello world</p>
</body>
</html>

我们将其命名为index.html,我们想要使用这个文件,首先要在py文件中import render_template:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def hello_world():
    return render_template('index.html')

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

然后我们运行一下,就会发现:
在这里插入图片描述

网页的标题改变了,这是因为html文件中两个title中间夹的即是网页的标题,其次是body的部分,成功输出了我们想要的内容。但这只是最简单的程序,下一步我们要实现的是参数的传递,简单来讲,就是将用户输入的内容从python后端传入html中并显示。但目前我们还没办法获取用户的输入,就只能靠我们自己指定一个变量并赋值,我们先在python中指定一个叫user的变量,再给它赋值,然后再html中再让它输出:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def hello_world():
    return render_template('index.html', user='Jason')

if __name__ == '__main__':
    app.run()
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
    <p>Hello world</p>
    <p>Your name is {{ user }}</p>
</body>
</html>

重新运行一下:
在这里插入图片描述

发现我们的参数成功的传入了,并且在网页上显示了出来,但是,这种方法有一个问题随着参数数量的增多,写起来也会很麻烦,所以我们可以在python文件中建一个字典,把我们的变量和对应的值都放到字典里面:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def hello_world():
    username={
        'user1': 'Jason',
        'user2': 'Tom',
        'user3': 'Jack'
    }
    return render_template('index.html', **username)

if __name__ == '__main__':
    app.run()
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
    <p>Hello world</p>
    <p>The first people is {{ user1 }}</p>
    <p>The second people is {{ user2 }}</p>
    <p>The third people is {{ user3 }}</p>
</body>
</html>

运行一下这个代码:
在这里插入图片描述
要注意的是,字典的导入需要在前面加两个**,还有就是字典的语法,这个就是python的相关内容了,这样写会让我们代码更容易更改维护,下一步,就是if和for等循环的写法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值