我使用的IDE是pycharm2020 专业版。
1、打开pycharm新建项目。点击“文件”->“新建项目”->“Flask”,然后输入保存目录。在这里选择编译环境,我使用的是Python 3.7(可以根据的实际情况选择),下面的“More Settings”默认就好。
2、创建的项目如下所示。
3、对于其它版本的pycharm可能没有Flask的快捷创建方式,我们可以自己创建,其实“static”和“templates”是两个空的文件目录。我们可以直接创建一个python项目。
创建后的项目结构是空的,如下所示。
我们点击项目,新建一个Python File,命名为app.py,然后建立两个“目录”,分别命名为“static”、“templates”即可,此时两个目录都是空的。
在新建的“app.py”中复制之前一样的代码,然后运行项目,可以看见我们的项目已经启动,点击或者在网页输入“http://127.0.0.1:5000/”,即可打开网页。
from flask import Flask
app = Flask(__name__) # 配置
@app.route('/') # 路由地址
def hello_world(): # 响应函数
return 'Hello World!'
if __name__ == '__main__': # 主函数
app.run()
网页展示的内容为“Hello World!”。
至此,我们flask框架的建立便完成了。
书接上文。按照我们新建flask的框架,添加我们的代码。
1、基本的配置
from flask import Flask, request, render_template,jsonify
# 配置设置
app = Flask(__name__)
app.config['DEBUG']= True # DEBUG模式
app.config['SEND_FILE_MAX_AGE_DEFAULT']= timedelta(seconds=1) # 默认缓存控制的最大期限,以秒计
if __name__ == '__main__':
app.run(debug=True)
2、设置展示网页的路由和对应的函数。这里我们设置了两个路由展示我们的两个网页,这两个网页的文件是保存在“templates”目录下。
# 城市空气质量查询
@app.route('/visual_histroy',methods=['post','get']) # 路由地址、请求的方式包括“post”和“get”
def get_histroy():
return render_template("histroy_time.html") # 展示网页
# 全国空气质量查询
@app.route('/visual_current',methods=['post','get'])
def get_current():
return render_template("current_time.html")
3、设置其它的路由和对应的函数用于前后端进行数据交互。对于每个路由我们都接受“post”和“get”请求方式,其中一些路由把“get”请求返回默认数据。
前端向后端传输的数据我们通过“request”对象可以获取;根据“request”对象的数据我们可以获取相应的数据,并返回给前端;后端向前端传输的数据我们通过"flask"里的“jsonify”,转换为json格式传输。
from datetime import timedelta
from base_fun import get_now_time,read_data
from web_data import Histroy_data,pm25_86
# 以上函数是自己写的
# 获取城市空气质量查询的数据更新响应
@app.route('/data',methods=['post','get'])
def get_cur_data():
if request.method == "POST":
return_dict = Histroy_data(request.values.get('city'), request.values.get('time')) # 根据城市和时间,获取相应的数据
return jsonify(return_dict) # 返回数据
else:
return_dict = Histroy_data("北京","2021年01月") # 默认读取北京,2021年01月的数据
return jsonify(return_dict)
# 获取地图json文件内容的响应
@app.route('/geo_map',methods=['post','get'])
def get_map():
province_name = request.values.get('province_name') # 读取地图
print("获取地图:",province_name)
filename = "./static/js/province/"+province_name+".json" # 文件地址,文件是json格式
return_dict = read_data(filename) # 读取地图文件数据
return jsonify(return_dict)
# 获取全国空气质量查询的数据更新响应
@app.route('/data_country',methods=['post','get'])
def get_country_data():
if request.method == "POST":
return_dict = pm25_86(request.values.get('province_name'))
if return_dict:
print("获取到数据:",return_dict)
return jsonify(return_dict)
else:
return None
else:
return_dict = pm25_86('全国')
if return_dict:
print("获取到数据:", return_dict)
return jsonify(return_dict)
else:
return None
# 实时时间的更新
@app.route('/time',methods=['post','get'])
def get_time():
if request.values.get('name') == '现在':
return get_now_time()
以上为flask框架里面有关路由的设置,接下来分别把flask调用的一些方法,和前端进行实现即可。