今天来学习一下Flask中网页模板以及网页模板参数的使用。

如果你是使用Pycharm pro版的话,创建项目的时候,选择Flask项目,所有的基础文件和文件夹Pycharm会自动帮你创建出来,在网上找了张图,仅供参考:

选择项目类型:Flask,这里注意你的Python版本 创建好之后就是下面的样子:

由于我用的是Pycharm community版本,没有项目类型可选,但是自己补一下两个文件夹就行,一个是static,一个是templates。 简单说明一下,static是存放image, css等项目文件的。templates是存放页面模板等项目文件的。

下面就模拟一个需求,用户已经登录了,要在首页显示用户的用户名信息,再随便写一句欢迎的话。这里我们就要引入一个新的类:render_template,模板渲染。为什么这么叫?因为就是直接翻译过来的,它的功能就是来渲染模板的,至于渲染这个词,是绘图术语,渲染在电脑绘图中是指用软件从模型生成图像的过程。从这个定义来理解的话,就是美化,填充模型,让模型更好看吧。就这么理解吧!

.py完整代码如下:

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def index():
    return render_template('index.html', username='uncleBen')

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

需要注意的是: 首先,导入Flask和render_template 其次,在使用的时候,一般就是return的内容做渲染,那就是return render_template(),这个render_template()函数里需要传一个最基本的参数就是你要渲染哪个页面,告诉它html文件名就行,因为它默认就会去templates这个文件下找你提供的html文件名,所以你的html文件不要乱放,否则它会找不到的。另外一个参数就是你要在前端页面中显示什么?今天这个例子是要显示用户名,拿就传一个username参数进去。如有其它参数,也可以加,然后赋值。

好了,py文件内容写好了,那么html里的代码应该这么写呢?这么才能拿到参数的值呢?来看一下html的代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    欢迎<b>{{ username }}</b>来到您的个人主页,这个页面是templates文件夹中的index.html模板。
</body>
</html>

很简单,唯一跟普通HTML文件的区别就是多了一个{{ username }},重点来了,在Flask项目的HTML中如下想引用参数(py文件中定义的),必须要用双花括号{{ }}括起来,就好了。so easy啊! 来看一下效果,上面Py代码里我传的username='uncleBen',效果如下: 然后我们再换一个用户名,让username='张无忌'

如果有多个参数呢?那刚开始你肯定要这么写了:

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def index():
    return render_template('index.html', username='张无忌', reg_days=15, location='光明顶')

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

运行一下,看看结果:

但是如果还有更多参数呢???比如10个,20个,要写这么多吗?这样会让人看到很不爽和很不专业的感觉。

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def index():
    context = {
        'username': '张无忌',
        'reg_days': 100,
        'location': '光明顶'
    }
    return render_template('index.html', **context)

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

为了区别,我把注册时间改成了100,来,运行一下,看一下效果:

小结

  1. 模板文件位置:应该放到templates文件夹下。
  2. 如果使用模板渲染函数,首先导入render_template类。
  3. 使用render_template()函数时,要告诉这个函数要渲染的html文件名,还有参数名和值,如果有的话。
  4. 在HTML中引用参数的格式:{{参数名}},一定要这个格式,这是Flask的语法,其它格式无效。
  5. 参数多的情况下,建议使用字典形式定义参数和值,然后在render_template()中利用**+字典名进行传参。