查看路由列表

  1. app.url_map

使用url跳转

url = url_for(路由函数)
retrun redirect(url)

转换器 int float path

  1. @app.route("/goods/<int:good_id>") # 也可以不加int 默认是普通字符串<str>(不能有斜杠)
  2. def goods(good_id):
  3. return "id is %s" % good_id

自定义转换器

可构造许多不同的正则表达式

  1. from werkzeug.routing import BaseConverter
  2. class RegexConverter(BaseConverter):
  3. def __init__(self, url_map, regex):
  4. super(RegexConverter, self).__init__(url_map)
  5. # 将参数保存为属性
  6. self.regex = regex
  7. class RegexConverter2(BaseConverter):
  8. def __init__(self, url_map, regex):
  9. super(RegexConverter2, self).__init__(url_map)
  10. # 将参数保存为属性
  11. self.regex = r'1[34578]\d{9}'
  12. app.url_map.converters["re"] = RegexConverter
  13. app.url_map.converters["mo"] = RegexConverter2
  14. @app.route("/send/<re(r'1[34578]\d{9}'):mobile>")
  15. def send_sms(mobile):
  16. return "it is %s" % mobile
  17. @app.route("/send/<mo:mobile>")
  18. def send_sms2(mobile):
  19. return "it is %s" % mobile

abort

abort(404) 返回handle_404_error(err)
image.png

设置请求头

image.png

jsonify

自动将字典转化为字符串并设置相应信息:data 200 {“Content-Type”: “application/json”}

  1. @app.route("/index")
  2. def index():
  3. data = {
  4. "name": "python",
  5. "age": 20
  6. }
  7. return jsonify(data)
  8. # 也可以直接jsonify(name="python", age=20)

设置 读取 删除 cookie

  1. from flask import Flask, make_response
  2. app = Flask(__name__)
  3. # 设置
  4. @app.route("/set_cookie")
  5. def set_cookie():
  6. resp = make_response("success")
  7. # 设置cookie 默认有效期是浏览器关闭。
  8. resp.set_cookie("key", "value")
  9. resp.set_cookie("key1", "value1", max_age=3600)# 一个小时过期
  10. return resp
  11. # 获取
  12. @app.route("/get_cookie")
  13. def get_cookie():
  14. c = request.cookies.get("key")
  15. return c
  16. # 删除
  17. @app.route("/dele_cookie")
  18. def dele_cookie():
  19. resp = make_response("success")
  20. resp.dele_cookie("key")
  21. return resp
  22. if __name__ == '__main__':
  23. app.run(debug=True)

session 机制

一定要设置 SECRET_KEY

  1. app.comfig["SECRET_KEY"] = "dwh "
  2. @app.route("/login")
  3. def set_session():
  4. session["name"] = "python"
  5. session["mobile"] = "232156546"
  6. return "OK"
  7. @app.route("/index")
  8. def index():
  9. name = session.get["name"]
  10. return "%s OK" % name

g 变量

可在上下文之间传递参数,临时设置变量。

  1. from flask import Flask, make_response, request, g
  2. @app.route("/login/<username>")
  3. def set_session(username):
  4. g.username = str(username)
  5. return "OK"
  6. @app.route("/index")
  7. def index():
  8. name = g.username
  9. return "%s OK" % name

hook

image.png
image.png

image.png

flask_script

  1. from flask import Flask, make_response, request, g
  2. from flask_script import Manager
  3. app = Flask(__name__)
  4. manager = Manager(app)
  5. app.config["SECRET_KEY"] = "dwh "
  6. @app.route("/login/<username>")
  7. def set_session(username):
  8. g.username = str(username)
  9. return "OK"
  10. if __name__ == '__main__':
  11. manager.run()

即可在命令行中运行:
python3 main.py runserver -h 0.0.0.0 -p 6000

不使用蓝图的分模块

image.png

使用蓝图的分模块

主程序中注册蓝图
image.png
小模块中创建蓝图
image.png

添加前缀
image.png
这个时候就要访问/orders/get_orders

目录结构

image.png
image.png
顶层
image.png

解决跨域问题

https://blog.zengrong.net/post/2615.html