查看路由列表
app.url_map
使用url跳转
url = url_for(路由函数)
retrun redirect(url)
转换器 int float path
@app.route("/goods/<int:good_id>") # 也可以不加int 默认是普通字符串<str>(不能有斜杠)
def goods(good_id):
return "id is %s" % good_id
自定义转换器
可构造许多不同的正则表达式
from werkzeug.routing import BaseConverter
class RegexConverter(BaseConverter):
def __init__(self, url_map, regex):
super(RegexConverter, self).__init__(url_map)
# 将参数保存为属性
self.regex = regex
class RegexConverter2(BaseConverter):
def __init__(self, url_map, regex):
super(RegexConverter2, self).__init__(url_map)
# 将参数保存为属性
self.regex = r'1[34578]\d{9}'
app.url_map.converters["re"] = RegexConverter
app.url_map.converters["mo"] = RegexConverter2
@app.route("/send/<re(r'1[34578]\d{9}'):mobile>")
def send_sms(mobile):
return "it is %s" % mobile
@app.route("/send/<mo:mobile>")
def send_sms2(mobile):
return "it is %s" % mobile
abort
abort(404) 返回handle_404_error(err)
设置请求头
jsonify
自动将字典转化为字符串并设置相应信息:data 200 {“Content-Type”: “application/json”}
@app.route("/index")
def index():
data = {
"name": "python",
"age": 20
}
return jsonify(data)
# 也可以直接jsonify(name="python", age=20)
设置 读取 删除 cookie
from flask import Flask, make_response
app = Flask(__name__)
# 设置
@app.route("/set_cookie")
def set_cookie():
resp = make_response("success")
# 设置cookie 默认有效期是浏览器关闭。
resp.set_cookie("key", "value")
resp.set_cookie("key1", "value1", max_age=3600)# 一个小时过期
return resp
# 获取
@app.route("/get_cookie")
def get_cookie():
c = request.cookies.get("key")
return c
# 删除
@app.route("/dele_cookie")
def dele_cookie():
resp = make_response("success")
resp.dele_cookie("key")
return resp
if __name__ == '__main__':
app.run(debug=True)
session 机制
一定要设置 SECRET_KEY
app.comfig["SECRET_KEY"] = "dwh "
@app.route("/login")
def set_session():
session["name"] = "python"
session["mobile"] = "232156546"
return "OK"
@app.route("/index")
def index():
name = session.get["name"]
return "%s OK" % name
g 变量
可在上下文之间传递参数,临时设置变量。
from flask import Flask, make_response, request, g
@app.route("/login/<username>")
def set_session(username):
g.username = str(username)
return "OK"
@app.route("/index")
def index():
name = g.username
return "%s OK" % name
hook
flask_script
from flask import Flask, make_response, request, g
from flask_script import Manager
app = Flask(__name__)
manager = Manager(app)
app.config["SECRET_KEY"] = "dwh "
@app.route("/login/<username>")
def set_session(username):
g.username = str(username)
return "OK"
if __name__ == '__main__':
manager.run()
即可在命令行中运行:python3 main.py runserver -h 0.0.0.0 -p 6000
不使用蓝图的分模块
使用蓝图的分模块
主程序中注册蓝图
小模块中创建蓝图
添加前缀
这个时候就要访问/orders/get_orders
目录结构
顶层