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中的应用之translate和maketrans用法详解
Aug 27 Python
python批量替换页眉页脚实例代码
Jan 22 Python
对web.py设置favicon.ico的方法详解
Dec 04 Python
python获取txt文件词向量过程详解
Jul 05 Python
解决Numpy中sum函数求和结果维度的问题
Dec 06 Python
python如何使用jt400.jar包代码实例
Dec 20 Python
Python线程协作threading.Condition实现过程解析
Mar 12 Python
Python3批量创建Crowd用户并分配组
May 20 Python
pyCharm 实现关闭代码检查
Jun 09 Python
python开发入门——set的使用
Sep 03 Python
详解Django的MVT设计模式
Apr 29 Python
Python中的协程(Coroutine)操作模块(greenlet、gevent)
May 30 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实现遍历文件夹的方法汇总
2017/03/02 PHP
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
2013/10/30 Javascript
AngularJS中的模块详解
2015/01/29 Javascript
zTree树形插件异步加载方法详解
2017/06/14 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
JavaScript实现三级级联特效
2017/11/05 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
React.js绑定this的5种方法(小结)
2018/06/05 Javascript
解决vue单页路由跳转后scrollTop的问题
2018/09/03 Javascript
详解vue 自定义marquee无缝滚动组件
2019/04/09 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
在python的类中动态添加属性与生成对象
2016/09/17 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
Python操作mongodb的9个步骤
2018/06/04 Python
Python二维码生成识别实例详解
2019/07/16 Python
在Django下创建项目以及设置settings.py教程
2019/12/03 Python
Python小白学习爬虫常用请求报头
2020/06/03 Python
HTML5未来发展趋势
2016/02/01 HTML / CSS
小学教师听课制度
2014/02/01 职场文书
网络工程师自荐书范文
2014/04/01 职场文书
大学竞选班长演讲稿
2014/04/24 职场文书
新闻工作者先进事迹
2014/05/26 职场文书
税务干部群众路线教育实践活动对照检查材料
2014/09/20 职场文书
2015年师德师风承诺书
2015/01/22 职场文书
2015年安全月活动总结
2015/03/26 职场文书
公司人力资源管理制度
2015/08/05 职场文书
幼儿园保育员随笔
2015/08/14 职场文书
2016年庆祝六一儿童节活动总结
2016/04/06 职场文书
Python 实现定积分与二重定积分的操作
2021/05/26 Python
详解运行Python的神器Jupyter Notebook
2021/06/03 Python
MySQL 8.0 驱动与阿里druid版本兼容问题解决
2021/07/01 MySQL
MySQ InnoDB和MyISAM存储引擎介绍
2022/04/26 MySQL