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)