目录
Flask 基础教程
Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。
什么是Web框架?
Web应用程序框架或简单的Web框架表示一组库和模块,它们使Web应用程序开发人员能够编写应用程序,而不必担心如协议,线程管理等低层细节。
Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。
Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。
什么是Flask?
Flask是一个用Python编写的Web应用程序框架。 它由Armin Ronacher开发,他领导着一个名为Pocco的Python爱好者的国际组织。 Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。 这两个都是Pocco项目。
Flask 环境配置
安装Flask通常需要Python 2.6或更高版本。 尽管Flask及其依赖与Python 3(Python 3.3以上版本)配合良好,但许多Flask扩展并不能正确支持它。 因此,但是官方建议在Python 3.6+ 以上安装Flask。
在激活的环境中,这里以Window 10 + Python 3.6环境作为安装演示,使用以下命令安装Flask:
使用以下指令安装:
pip install flask
输入指令查看版本
import flask
print(flask.__version__)
# 2.0.1
一个行之有效的框架搭建:如果app.py运行不成功请认真检查(示例):
Flask 路由(Route)
现代Web框架使用路由技术来帮助用户记住应用程序URL。 无需从主页导航即可直接访问所需页面。Flask中的route()装饰器用于将URL绑定到函数。
# 导入Flask类库
from flask import Flask
# 创建应用实例
app = Flask(__name__)
# 视图函数(路由)
@app.route("/")
def hello_world():
return "Hello, World!"
# 启动服务
if __name__ == '__main__':
app.run(debug = True)
Flask 入门体验 -- hello world
这样,当请求127.0.0.1的时候,页面就会出现了hello world。光速体验一波flask,但是认真理解一下,首先初始化一个flask对象,@app.route则是引入路由装饰器,然后定义一个方法,这个方法在请求到根节点路由时会自动执行。最后在本地的3000端口启动该服务。
Request对象
部分属性如下(加粗的较为常见):
属性 | 说明 |
---|---|
method | 请求方法,比如GET、POST |
data | 以字符串的形式存储请求的数据 |
files | 上传的文件,类型为MultiDict |
args | 解析URL中提交的参数,类型为MultiDict |
form | 上传的表单数据,类型为MultiDict |
values | 包含args和form的数据,类型为CombineMultiDict |
json | 解析JSON数据,如果没有则返回None |
cookies | 包含客户端传输的所有 cookies ,类型为MultiDict |
headers | 请求头信息,类似字典,可通过关键词获取对应得信息 |
在templates文件夹下创建page2.html文件,代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>line</title>
<script type="text/javascript" src="../static/js/jquery-3.6.4.min.js"></script>
<script type="text/javascript" src="../static/js/echarts.min.js"></script>
</head>
<body>
<h2>ajax异步请求实现echarts画图</h2>
<div id="chart" style="width:900; height:500px;"></div>
<script type='text/javascript'>
var myChart = echarts.init(document.getElementById('chart'));
var option;
option = {
xAxis: {
type: 'category',
data: [],
},
yAxis: {
type: 'value'
},
series: [
{
data: [],
type: 'line'
},
{
data: [],
type: 'line'
},
]
};
// 将ajax封装到函数中执行
function get_json() {
$.ajax({
url: "/json",
success: function (e) {
option.xAxis.data = e.time;
option.series[0].data = e.milk;
option.series[1].data = e.bread;
myChart.setOption(option);
}
})
}
get_json();
</script>
</body>
</html>
flask代码如下:
from flask import Flask, request, redirect, render_template, session, jsonify
import pandas as pd
df = pd.read_excel('./flask/demo1/static/折线图作业数据-商品销量(1).xlsx')
df['时间'] = df['日期'].agg(lambda x:str(x)[5:10])
dict_to_json = {
'time':df['时间'].tolist(),
'milk':df['牛奶'].tolist(),
'bread':df['面包'].tolist(),
}
app = Flask(__name__)
# 定义一个路由展示图形
@app.route('/page2')
def page2():
return render_template('page2.html')
if __name__ == "__main__":
# app.run('0.0.0.0',port=80)
app.run(debug=True)
print(dict_to_json)
效果如下: