今天来学习一下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,来,运行一下,看一下效果:
小结
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。