import json import os from flask import Flask,render_template,redirect,send_file,jsonify,url_for app = Flask(__name__) app.debug=True @app.route('/index') def index(): # 返回值类型必须是字符串 lis=[1,2,3] new_string = json.dumps(lis) return new_string @app.route('/h1') def h1(): #返回一个模版 return render_template('home.html') @app.route('/h2') def h2(): #重定向 return redirect('index') @app.route('/getFile') def getFile(): #返回文件 return send_file('阿瞎.jpg') @app.route("/get_json") def get_json(): #返回json文件格式 data={ "name":"朱希博", "pwd":"123" } return jsonify(data) #请求request,必须导入request from flask import request #endpoint用法:视图函数与路由的对应关系,endpoint不能重复 #用法一:将名字复杂的函数名利用endpoint简单命名 #此时因为endpoint定义命名后,当url_for反向访问(多用于页面之间跳转)时,只需要写 url_for(‘t’) 即可访问到该页面 #用法二:最大的优点就是url_for反向访问地址时,是动态获取路由的,HTML动态获取路由 @app.route('/login_01') def login(): return render_template(url_for('login.html')) @app.route('/show_test001',endpoint='t') def show_test(): return render_template('test_endpoint.html') @app.route('/m',endpoint='ind_name') def ind(): print(url_for('ind_name')) return "<input type='text'>" #redirect_to,只要访问/z路径,就会重定向到/m的路径页面去。 状态码:308(永远重定向) #strict_slashes,如果我是strict_slashes=True。是否严格要求路由匹配规则 #defaults默认参数 @app.route("/z",endpoint='z',methods=["GET","POST"],redirect_to='/m',strict_slashes=True,defaults={'nid':123}) def z(nid): return "123".join(nid) #动态参数:不限定路由地址类型,默认是string,如果定义int就只能传int类型的页 @app.route("/look/<int:page>") def look(page): return f"当前是第{page}页来" #动态参数: @app.route("/look1/<string:page>") def look1(page): return f"当前页是{page}" @app.route("/look2/<int:page>_<int:row>_<int:row_2>") def look2(page,row,row_2): return f"当前是第{page}页{row}行{row_2}行" #动态参数应用场景:结合send_file @app.route("/look3/<folder>/<filename>") def look3(folder,filename): file_path = os.path.join(folder,filename) return send_file(file_path) if __name__ == '__main__': app.run('127.0.0.1',9090)