jsonify模块

可以将Python的数据结构快速转为Json格式字符串。

GET快捷参数

1. 使用尖括号

  1. @app.route('/user/<id>') # <int:id> id作为int类型,来过滤 <string:id>
  2. def user_info(id):
  3. print(id)
  4. return id

2. 使用参数列表

GET请求为

  1. http://127.0.0.1:5000/user/?id=1532

则代码需要引入request来进行参数解析

  1. @app.route('/user/', methods=['GET'])
  2. def user_info():
  3. id = request.args.get('id')
  4. print(id)
  5. return id
  1. http://127.0.0.1:5000/user/?id=1532&pwd=16

GET参数使用字符来替换操作语句,类似于SQL的结构。例如& 替换and,?替换where

  1. @app.route('/user/', methods=['GET'])
  2. def user_info():
  3. id = request.args.get('id')
  4. pwd = request.args.get('pwd')
  5. print(pwd)
  6. print(id)
  7. return f"您的id为{id},密码为{pwd}"

3. methods 只允许列表中的请求类型

如果不在列表中,则会返回Methods NOT Allow错误。

构造URL

url_for可以通过函数名来寻找URL。
如果需要发生跳转,但是URL已经改变,因此直接通过字符串寻找URL来实现功能就无法应对URL改变的情况。
例如函数甲需要跳转到函数乙,但是函数乙的URL已经改变,则需要url_for,而非使用硬编码
url_for可以自动转义Unicode字符串。例如GET方法的空格和中文会被转化。

  1. @app.route('/info/<msg>')
  2. def re_msg(msg):
  3. return msg
  4. @app.route('/api/user/',methods=['GET'])
  5. def api_info():
  6. myid = request.args.get('id')
  7. mymsg = request.args.get('msg')
  8. print(myid)
  9. redirectUrl = url_for("re_msg", msg=mymsg)
  10. print(redirectUrl)
  11. return mymsg

GET请求为:

http://127.0.0.1:5000/api/user/?id=12&msg=asd

image.png

重定向和跳转

永久重定向

直接返回重定向的地址,而不返回原来的地址

暂时性重定向

当重定向业务完成后,返回申请的主页,例如登录注册等

导入redirect包

  1. from flask import redirect
  1. @app.route('/login/<id>')
  2. def login(id):
  3. if id == 1:
  4. return "correct" # 永久重定向
  5. else:
  6. return redirect(url_for("index")) # 临时重定向,返回302