Response

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
  1. # -*- coding: utf-8 -*-  
  2. from flask import Flask, redirect, render_template, jsonify, send_file  
  3.       
  4. app = Flask(__name__)  
  5.       
  6.       
  7. @app.route('/')  
  8. def index():  
  9.     return redirect('/login')  # 跳转,重定向  
  10.       
  11.       
  12. @app.route('/login')  
  13. def login():  
  14.     return render_template('login.html')  # 返回模板有浏览器渲染  
  15.       
  16.       
  17. @app.route('/json')  
  18. def json():  
  19.     data = {  
  20.         "name": 'peach'  
  21.     }  
  22.     return jsonify(data)  # 返回json标准字符串  
  23.       
  24.       
  25. @app.route('/send_files')  
  26. def send_files():  
  27.     return send_file('Dockerfile')  # 返回文件(打开文件,并返回文件内容,自动识别)  
  28.       
  29.       
  30. app.run(host='0.0.0.0'debug=True)  

   

REQUEST

  1. Request是全局的需要导入  
  2.       
  3. from flask import Flask, request, render_template    
  4.       
  5. Requestfrom表单中取数据有两种方式  
  6.       
  7. 方式一:  
  8.     print(request.form.get('username'))    
  9. 方式二:  
  10.     print(request.form['username'])    
  11.       
  12.       
  13. 两者的区别,当没有'username'的时候,方式二会报错:Keyerror

视图代码如下:  

Flask request和response Python 第1张

正确取值

Flask request和response Python 第2张

KerError错误:  

Flask request和response Python 第3张

   

Request对象参数解析

  1. @app.route('/login', methods=["POST"'GET'])  
  2. def login():  
  3.     print(request.path)  # 获取请求地址  
  4.     print(request.url)  # 获取完整http url  
  5.     print(request.host_url)  # http主机地址端口  
  6.     print(request.host)  # 主机地址端口  
  7.       
  8.     print(request.method)  # 获取请求对象  
  9.     print(request.form)   # 请求表单内数据,  request.form.to_dict() 之间转换为字典格式  
  10.     print(request.args)  # 请求地址参数提取可以用request.args.get()  
  11.     print(request.values)  # 所有的args地址参数和form表单内参数 to_dict() 之间转换为字典格式,通常用来查看数据  
  12.       
  13.     print(request.json)  # json数据,如果请求头的类型是json,自动把form的数据序列化为json  
  14.     print(request.data)  # 如果请求头的类型是无法识别的时候,请求体的数据将原始储存,是bytes  
  15.     print(request.cookies) # 获取cookies
  16.     print(request.headers) # 获取请求头
  17.     my_file = request.files.get('my-file')  
  18.     print(my_file)  
  19.     my_file.save(my_file.filename)  # 保存图片  
  20.       
  21.     return render_template('login.html')  

HTML:

  1. <!DOCTYPE html>  
  2. <html lang="en">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>LOGIN</title>  
  6. </head>  
  7. <body>  
  8. <form action="/login?a=1&b=2", method="post", enctype="multipart/form-data">  
  9.     用户名<input type="text", name="username">  
  10.     密码<input type="text", name="password">  
  11.     文件<input type="file" name="my-file">  
  12.     <input type="submit", value="登陆">  
  13. </form>  
  14. </body>  
  15. </html>  

   

运行结果如下:

Flask request和response Python 第4张

因为我用的是docker环境,文件保存如下:

Flask request和response Python 第5张

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄