from flask import Flask, render_template, send_from_directory, jsonify,send_from_directory,request,make_response
import os
app = Flask(__name__)
@app.route('/')
def hello_world():
return render_template('index.html')
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def get_file(path):
print(os.path.abspath(request.path))
#查看绝对路径,我的py文件是在桌面,所以这里的绝对路径是c:+路由而来的路径(path)
#print(request.path)
try:
response = make_response(send_from_directory(os.path.dirname(os.path.abspath(request.path)), os.path.basename(request.path), as_attachment=True))
#用函数获得文件所在路径(不包括文件名)和文件名
return response
except Exception as e:
return jsonify({"code": "异常", "message": "{}".format(e)})
if __name__ == '__main__':
app.run(debug=True, port=8080)
这个实验是将本地网页游戏修改成有服务器端的网页游戏。
1.要从https://www.aigei.com/game-code/code/webgame/中下载<js打飞机小游戏>,如果下载不了欢迎留言找我要文件,如果有类似模板的自己改一下都可以完成今天的实验
2.文件目录是这样的
3.将index.html复制在template文件夹下,如果没有template文件夹就在python程序所在目录下建一个template,这是flask的模板。因为render_template函数会从template文件夹中查找。
4.第二个路由是匹配所有路径,这是index.html里需要加载资源
因为需要加载各种前端需要的资源,于是向服务器发出get请求,服务器会对所有路由作响应(里面的各种文件夹太多了)。通过注释可知为了返回需要的文件,将下载下的三个文件夹复制到c盘下(仅仅是c盘下,因为我的py程序就在桌面,路径就是c+路由的路径)get_file(path)必须有path这个参数,否则会报错got an unexpected keyword argument。
每天一个python小例,加油!