zoukankan      html  css  js  c++  java
  • Flask的请求对象--request --

    request-Flask的请求对象

    请求解析和响应封装大部分是有Werkzeug完成的,Flask子类化Werkzeug的请求(Request)对象和响应(Response)对象,并添加了和程序的特定功能。

    #encoding=utf-8
    from flask import Flask,request app=Flask(__name__)
    @app.route('/hello/') def hello():     name = request.args.get('name','Flask') #获取查询参数name的值,默认是Flask     return '<h1>Hello, %s</h1>' % name   #替换到返回值中

    if __name__ == '__main__':     app.run(debug=True)
    结果:

    当url中不指定name和值,默认返回name的值为Flask

     

    打印request对象的属性信息

    #encoding=utf-8

    from flask import Flask,request
    app=Flask(__name__)

    @app.route('/hello/')
    def hello():
        name = request.args.get('name','Flask') #获取查询参数name的值     print "request.args:",request.args     print "request.args.items():",request.args.items()     print "request.full_path:",request.full_path     print "request.path:",request.path     print "request.host:",request.host     print "request.host_url:",request.host_url     print "request.headers: ",request.headers     print u"请求数据request.data:",request.data     print "request.endpoint:",request.endpoint     print "request.json:",request.json     print "request.method:",request.method     print u"请求的url模式(http或https)request.scheme:",request.scheme     print "request.user_agent: ",request.user_agent     return '<h1>Hello, %s</h1>' % name  # 替换到返回值中


    if __name__ == '__main__':     app.run(debug=True)
     

    刷新页面请求后输入结果:可以看到url的信息

    request.args: ImmutableMultiDict([('name', u'xiaxiaoxu')])

    request.args.items(): [('name', u'xiaxiaoxu')]

    request.full_path: /hello/?name=xiaxiaoxu

    request.path: /hello/

    request.host: 127.0.0.1:5000

    request.host_url: http://127.0.0.1:5000/

    request.headers:

    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36

    Connection: keep-alive

    Host: 127.0.0.1:5000

    Upgrade-Insecure-Requests: 1

    Cache-Control: max-age=0

    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

    Accept-Language: zh-CN,zh;q=0.9

    Accept-Encoding: gzip, deflate, br

    请求数据request.data:

    request.endpoint: hello

    request.json: None

    request.method: GET

    请求的url模式(http或https)request.scheme: http

    request.user_agent:

    Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36

    127.0.0.1 - - [25/Dec/2018 22:08:19] "GET /hello/?name=xiaxiaoxu HTTP/1.1" 200 -

    除了URL,请求报文中的其他信息都可以通过request对象的属性和方法获取,常用的属性有:

    path:base_url
    full_path:url
    host:url_root
    host_url
    args:Werkzeug的ImmutableMultiDict对象。存储解析后的查询字符串,可通过字典方式获取键值。如果你想获取未解析的原生查询字符串,可以用query_string属性
    blueprint:当前蓝本的名称
    cookies:一个包含所有随请求提交的cookies的字典
    data:包含字符串形式的请求数据
    endpoint:于当前请求相匹配的端点值
    files:Werkzeug的MultiDict对象,包含所有上传文件,可以使用字典的形式获取文件。使用的键为文件input标签中的name值,对应的值为Werkzeug的FileStorage对象。可以调用save()方法并传入保存路径来保存文件
    form:Werkzeug的ImmutableMultiDict对象。于files类似,包含解析后的表单数据。表单字段值通过input标签的name属性值作为键获取
    values:Werkzeug的CombinedMultiDict对象,结合了args和form属性的值
    get_data(cache=True,as_text=False,parse_from_data=False):获取请求中的数据,默认读取为字节字符串(bytestring),将as_text设为True则返回值将是解码后的unicode字符串
    get_json(self,force=False,silent=False,cache=True):作为json解析并返回数据,如果MIME类型不是json,返回None(除非force设为True);解析出错则抛出Werkzeug提供的BadRequest异常(如果未开启调试模式,则返回400错误响应),如果silent设为True则返回None;cache设置是否缓存解析后的json数据
    headers:一个Werkzeug的EnvironHeaders对象,包含首部字段,可以以字典的形式操作
    json:包含解析后的json数据,内部调用get_json(),可通过字典的方式获取键值
    method:请求的HTTP方法
    referrer:请求发起的源URL,即referer
    scheme:请求的URL模式(http或https)
    user_agent:用户代理(User Agent, UA),包含了用户的客户端类型,操作系统类型等信息
  • 相关阅读:
    BZOJ 2034 【2009国家集训队】 最大收益
    vijos P1780 【NOIP2012】 开车旅行
    BZOJ 2115 【WC2011】 Xor
    BZOJ 3631 【JLOI2014】 松鼠的新家
    BZOJ 4717 改装
    BZOJ 2957 楼房重建
    BZOJ 4034 【HAOI2015】 T2
    BZOJ 1834 【ZJOI2010】 network 网络扩容
    BZOJ 2440 【中山市选2011】 完全平方数
    BZOJ 2733 【HNOI2012】 永无乡
  • 原文地址:https://www.cnblogs.com/xiaxiaoxu/p/10176854.html
Copyright © 2011-2022 走看看