zoukankan      html  css  js  c++  java
  • 6. Flask请求和响应

    一、请求相关信息

    1. 请求参数

    1. request.method    - 请求方法
    2. request.args      - get请求的参数
    3. request.form	     - post请求的参数
    4. request.values    - 所有的请求参数
    5. request.cookies
    6. request.headers
    7. request.path
    8. request.full_path
    9. request.script_root
    10.request.url
    11.request.base_url
    12.request.url_root
    13.request.host_url
    14.request.host
    15.request.remote_addr - 获取ip
    

    2. 示例

    1. 获取单个值 
        request.args.get('id')
        
    2. 获取多个值
        request.args.getlist('ids')
        
    3. 将参数转换为字典
        data = request.args
        data_dict = data.to_dict()
        
    4. 获取文件
        f = request.files['the_file']
        f.save('/var/www/uploads/uploaded_file.txt')
        
    5. 如果想要知道文件上传之前其在客户端系统中的名称,使用filename属性
        f = request.files['the_file']
        f.save('/var/www/uploads/' + secure_filename(f.filename))
    

    二、响应相关信息

    1. 返回模式

    1. return '字符串' - 实际上是调用make_response
    
    2. return render_template('html模板路径', {})
    
    3. return redirect('/index.html')
    
    4. jsonify - 返回json数据
        from flask import jsonify
        return jsonify(**dict)
    

    2. make_response

    1. 响应中加入信息,基于make_response
    
    from flask import make_response, render_template
    # response是flask.wrappers.Response类型
    
    response = make_response(render_template('index.html'))
    response.set_cookie('key', 'value')
    response.delete_cookie('key')
    response.headers['X-Something'] = 'A value'
    
    from flask import Flask, make_response
    
    app = Flask(__name__)
    
    def auth_decorator(func):
        def inner(*args, **kwargs):
            print('装饰器')
            return func(*args, **kwargs)
    
        return inner
    
    @app.route('/index', endpoint='index', methods=['GET'])
    @auth_decorator
    def index():
        response = make_response('index')
        response.headers['hhhh'] = 'asdsad'
        return response
    
    if __name__ == '__main__':
        app.run()
    
  • 相关阅读:
    Android中的AsyncTask异步任务的简单实例
    Cubieboard学习资源
    BZOJ4518: [Sdoi2016]征途(dp+斜率优化)
    BZOJ1096: [ZJOI2007]仓库建设(dp+斜率优化)
    BZOJ1010: [HNOI2008]玩具装箱toy(dp+斜率优化)
    BZOJ4517: [Sdoi2016]排列计数(组合数+错位排列)
    BZOJ4810: [Ynoi2017]由乃的玉米田(莫队+bitset)
    bitset用法小结
    BZOJ3687: 简单题(dp+bitset)
    BZOJ4484: [Jsoi2015]最小表示(拓扑排序乱搞+bitset)
  • 原文地址:https://www.cnblogs.com/hq82/p/12641622.html
Copyright © 2011-2022 走看看