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),包含了用户的客户端类型,操作系统类型等信息
  • 相关阅读:
    自学python day 10 函数的动态参数、命名空间、作用域
    老男孩 python 自学 打印05 dict 复习总结
    老男孩python 自学day09 函数开始
    今天
    day 03
    eclipse如何安装配置tomcat
    windows上配置maven环境
    如何创建ssh key使电脑和Github关联在一起
    怎么将本地文件上传到github
    使用git工具上传代码到github
  • 原文地址:https://www.cnblogs.com/xiaxiaoxu/p/10176854.html
Copyright © 2011-2022 走看看