• Flask 学习5.请求对象Request 上海


    前言

    在 Flask 中 由全局对象 request 来提供请求信息。

    Request 请求对象

    首先,您必须从 flask 模块导入请求对象:

    from flask import request
    

    通过使用 method 属性可以操作当前请求方法,通过使用 form 属性处理表单数据(在 POST 或者 PUT 请求 中传输的数据)。
    以下是使用上述两个属性的例子:

    from flask import Flask
    from flask import render_template
    from flask import request
    app = Flask(__name__)
    
    
    @app.route('/login', methods=['POST', 'GET'])
    def login():
        error = None
        if request.method == 'POST':
            if request.form['username'] == 'test':
                return 'test 用户'
            else:
                error = 'Invalid username/password'
        return render_template('login.html', error=error)
    
    
    if __name__ == '__main__':
        app.run()
    

    login.html模板内容

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>login 表单</title>
    </head>
    <body>
        <form method="post">
            <div>
                <label for="user">用户名</label>
                <input name="username" id="user" placeholder="输入用户名">
            </div>
            <input type="submit" value="提交按钮">
            <div>
                <p>{% if  error %} {{ error }} {% endif %}</p>
            </div>
        </form>
    
    </body>
    </html>
    

    启动服务后访问页面

    输入username不等于test,就会出现error提示、

    在上面代码中request.form获取表单输入的数据,request.method 获取用户请求方式。

    args 属性

    要操作 URL (如 ?key=value )中提交的参数可以使用 args 属性

    searchword = request.args.get('key', '')
    

    使用示例

    from flask import Flask
    from flask import render_template
    from flask import request
    app = Flask(__name__)
    
    
    @app.route('/demo', methods=['GET'])
    def search():
        key = request.args.get('user')
        return f'query 查询参数的值:{key}'
    
    
    if __name__ == '__main__':
        app.run()
    

    启动服务后,输入请求地址

    http://127.0.0.1:5000/demo?user=yoyo
    

    运行结果

    常用的属性

    request对象常用的属性

    属性 功能
    form 一个从POST和PUT请求解析的 MultiDict(一键多值字典)。
    args MultiDict,要操作 URL (如 ?key=value )中提交的参数可以使用 args 属性:searchword = request.args.get('key', '')
    values CombinedMultiDict,内容是form和args。 可以使用values替代form和args。
    cookies 请求的cookies,类型是dict。
    stream 在可知的mimetype下,如果进来的表单数据无法解码,会没有任何改动的保存到这个 stream 以供使用。很多时候,当请求的数据转换为string时,使用data是最好的方式。这个stream只返回数据一次。
    headers 请求头,字典类型。
    data 包含了请求的数据,并转换为字符串,除非是一个Flask无法处理的mimetype。
    files MultiDict,带有通过POST或PUT请求上传的文件。
    environ WSGI隐含的环境配置。
    method 请求方法,比如POST、GET。
    path 获取请求文件路径:/myapplication/page.html
    base_url 获取域名与请求文件路径:http://127.0.0.1:5000/demo
    url 获取全部url:http://127.0.0.1:5000/demo?id=1&edit=edit
    url_root 获取域名:http://www.baidu.com/
    is_xhr 如果请求是一个来自JavaScript XMLHttpRequest的触发,则返回True,这个只工作在支持X-Requested-With头的库并且设置了XMLHttpRequest。
    endpoint endpoint匹配请求,这个与view_args相结合,可是用于重构相同或修改URL。当匹配的时候发生异常,会返回None。
    json 如果mimetype是application/json,这个参数将会解析JSON数据,如果不是则返回None。 可以使用这个替代get_json()方法。
    max_content_length 只读,返回MAX_CONTENT_LENGTH的配置键。
  • 相关阅读:
    Linux 文件系统
    Hadoop、HBase、Hive、Spark
    Linux 虚拟内存机制和内存映射(mmap)
    geotools:GTRenderer to draw maps
    An Open Source Software Suite for MultiDimensional Meteorological Data Computation and Visualisation用于多维气象数据计算和可视化的开源软件套件
    idea:no artifacts marked for deployment
    jts教程:Geometry包
    Geotools之StreamingRenderer&ReferencedEnvelope
    GeoServer之tiger roads数据集
    idea:no main class specified
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/16610827.html
Copyright © 2020-2023  润新知