Python编程flask使用页面模版的方法


Posted in Python onDecember 28, 2018

在flask中可以像go和angular那样使用页面模版(template),可以将HTML页面显示进行模版化,通过参数传递与页面进行数据交互。

概要信息

Python编程flask使用页面模版的方法

事前准备:flask

liumiaocn:flask liumiao$ which flask
/usr/local/bin/flask
liumiaocn:flask liumiao$ flask --version
Flask 1.0.2
Python 2.7.10 (default, Jul 15 2017, 17:16:57) 
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)]
liumiaocn:flask liumiao$

代码示例:嵌入式的HTML模版

像Angular一样,我们可以在flask中写前端的页面,python代码中混杂着HTML代码,在这里将前面的HelloWorld示例进行简单的修改,将显示的Hello World加上的设置。

代码示例

liumiaocn:flask liumiao$ cat flask_1.py 
#!/usr/bin/python
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
  return "<h1>Hello World!</h1>"
if __name__ == "__main__":
  app.debug=True
  app.run(host='0.0.0.0',port=7000)
liumiaocn:flask liumiao$

执行&确认

在HelloWorld示例中我们提到有两种方式启动flask的微服务进程,这里再添加一种,添加#!/usr/bin/python之后,同时对此文件添加可执行权限比如755,即可使用.启动

liumiaocn:flask liumiao$ chmod 755 flask_1.py 
liumiaocn:flask liumiao$ ./flask_1.py 
 * Serving Flask app "flask_1" (lazy loading)
 * Environment: production
  WARNING: Do not use the development server in a production environment.
  Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://0.0.0.0:7000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 131-533-062

通过curl进行结果确认:

liumiaocn:flask liumiao$ curl http://localhost:7000
<h1>Hello World!</h1>liumiaocn:flask liumiao$

页面确认

Python编程flask使用页面模版的方法

代码示例

上面的示例过于简单,写一个简单的完整的页面来确认一下

liumiaocn:flask liumiao$ cat flask_1.py 
#!/usr/bin/python
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
  return '<!DOCTYPE html> \
<html> \
<head> \
<meta charset="utf-8"> \
<title>Hello</title> \
</head> \
<body>\
<h1>Hello World!</h1> \
</body>\
</html>'
if __name__ == "__main__":
  app.debug=True
  app.run(host='0.0.0.0',port=7000)
liumiaocn:flask liumiao$

执行&确认

通过curl可以确认页面范围信息

liumiaocn:flask liumiao$ ./flask_1.py 
 * Serving Flask app "flask_1" (lazy loading)
 * Environment: production
  WARNING: Do not use the development server in a production environment.
  Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://0.0.0.0:7000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 131-533-062

也可以通过浏览器来确认title和页面显示

Python编程flask使用页面模版的方法

页面模版

嵌在python的代码中非常的麻烦,转义的连接,以及源码的查看都非常不方便。flask提供了Jinja2的模版渲染,只需要引入render_template即可使用。

import render_template

为了使用这个功能,首先需要在程序中做如下import

from flask import render_template

准备页面信息

比如将上文中嵌入的HTML页面独立成index.html,详细信息如下:

liumiaocn:flask liumiao$ ls templates/
index.html
liumiaocn:flask liumiao$ cat templates/index.html 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Hello Template</title>
</head>
<body>
  <h1>Hello World!</h1>
</body>
</html>
liumiaocn:flask liumiao$

注意事项:flask会在当前目录的templates下搜索对应的模版文件,所以需要创建templates文件夹,然后将模版html文件放入其中。

页面调用

在页面上只需要调用render_template即可实现url与对应模版的关联,

render_template(“index.html”)

详细代码

liumiaocn:flask liumiao$ cat flask_2.py 
#!/usr/bin/python
from flask import Flask
from flask import render_template
app = Flask(__name__)
@app.route("/")
def hello():
  return render_template("index.html")
if __name__ == "__main__":
  app.debug=True
  app.run(host='0.0.0.0',port=7000)
liumiaocn:flask liumiao$

执行&确认

liumiaocn:flask liumiao$ python flask_2.py 
 * Serving Flask app "flask_2" (lazy loading)
 * Environment: production
  WARNING: Do not use the development server in a production environment.
  Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://0.0.0.0:7000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 131-533-062

使用curl可以看到详细的html代码,而且读起来方便多了

liumiaocn:~ liumiao$ curl http://localhost:7000
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Hello Template</title>
</head>
<body>
  <h1>Hello World!</h1>
</body>
</html>liumiaocn:~ liumiao$

也可以通过浏览器确认并查看源码

Python编程flask使用页面模版的方法

小结

使用render_template,flask也可以像angular一样非常方便的创建用于展示的模版视图,我们已经说过render_template是基于Jinja2的模版,在下一篇文章中将继续介绍template的数据交互和控制方式。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
Python FTP操作类代码分享
May 13 Python
python里将list中元素依次向前移动一位
Sep 12 Python
Python中的装饰器用法详解
Jan 14 Python
Python中的字符串查找操作方法总结
Jun 27 Python
Python中几种导入模块的方式总结
Apr 27 Python
python和ruby,我选谁?
Sep 13 Python
Python常见字典内建函数用法示例
May 14 Python
详解Python基础random模块随机数的生成
Mar 23 Python
下载官网python并安装的步骤详解
Oct 12 Python
Python FFT合成波形的实例
Dec 04 Python
Django实现内容缓存实例方法
Jun 30 Python
python speech模块的使用方法
Sep 09 Python
Python编程中flask的简介与简单使用
Dec 28 #Python
Python3 Post登录并且保存cookie登录其他页面的方法
Dec 28 #Python
Python3 使用cookiejar管理cookie的方法
Dec 28 #Python
Python编程在flask中模拟进行Restful的CRUD操作
Dec 28 #Python
python获取服务器响应cookie的实例
Dec 28 #Python
基于Python在MacOS上安装robotframework-ride
Dec 28 #Python
Python3爬虫之urllib携带cookie爬取网页的方法
Dec 28 #Python
You might like
php插入中文到sqlserver 2008里出现乱码的解决办法分享
2012/07/19 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
2015/12/10 PHP
php session实现多级目录存放实现代码
2016/02/03 PHP
PHP接入微信H5支付的方法示例
2019/10/28 PHP
AutoSave/自动存储功能实现
2007/03/24 Javascript
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
关于javascript中的typeof和instanceof介绍
2012/12/04 Javascript
jquery 列表双向选择器之改进版
2013/08/09 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
js中style.display=&quot;&quot;无效的解决方法
2014/10/30 Javascript
jquery实现图片随机排列的方法
2015/05/04 Javascript
javascript实现带下拉子菜单的导航菜单效果
2015/05/14 Javascript
微信小程序之ES6与事项助手的功能实现
2016/11/30 Javascript
微信小程序 Windows2008 R2服务器配置TLS1.2方法
2016/12/05 Javascript
JS实现隔行换色的表格排序
2017/03/27 Javascript
微信小程序 标签传入数据
2017/05/08 Javascript
Vue实现简单的跑马灯
2020/05/25 Javascript
python正则表达式修复网站文章字体不统一的解决方法
2013/02/21 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
2017/11/30 Python
对pandas中apply函数的用法详解
2018/04/10 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
解决Pymongo insert时会自动添加_id的问题
2020/12/05 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
Original Penguin美国官网:布拉德皮特、强尼德普喜爱的服装品牌
2016/10/25 全球购物
美国婚礼和派对礼品网站:Kate Aspen(新娘送礼会、迎婴派对)
2018/03/28 全球购物
英国折扣高尔夫商店:Discount Golf Store
2019/11/19 全球购物
初中生自我评价
2014/02/01 职场文书
家长通知书家长评语
2014/04/17 职场文书
电焊工岗位工作职责
2014/07/09 职场文书
防灾减灾日活动总结
2014/08/26 职场文书
2014年发展党员工作总结
2014/11/12 职场文书
2019旅游导游工作总结
2019/06/27 职场文书
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android
vue el-table实现递归嵌套的示例代码
2022/08/14 Vue.js