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:\n",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:\n",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),包含了用户的客户端类型,操作系统类型等信息
Flask的请求对象--request的更多相关文章
- flask的请求上下文request对象
Flask从客户端收到请求时,要让视图函数能访问请求对象request ,才能处理请求.我们可以将request对象作为参数传到试图函数里,比如: from flask import Flask, r ...
- aes加解密后续问题contentType不是application/json时候后台解析请求对象request
一.post请求的三种content-type 1.application/x-www-form-urlencoded 主要用于如下:1.1: 最常见的POST提交数据方式.1.2:原生form默认的 ...
- python web开发-flask访问请求数据request
Request对象在web应用的开发中是一个非常重要的对象,主要用来获取用户发来的请求数据. 常用属性参考:http://docs.jinkan.org/docs/flask/api.html#fla ...
- urllib基础-请求对象request
简单的案例-爬取百度首页 from urllib import request ''' 爬取百度首页 ''' # 确定爬去目标 base_url = 'http://www.baidu.com' # ...
- FastAPI(54)- 详解 Request 请求对象
背景 前面讲了可以自定义 Response,那么这里就讲下请求对象 Request 可以通过 Request 来获取一些数据 获取请求基础信息 @app.get("/base") ...
- flask之请求与响应、闪现(阅后即焚)、请求扩展(before,after)、中间件、LOCAL对象、偏函数、
目录 1.flask请求与响应 2.闪现 3.请求扩展 4.中间件 5.LOCAL对象 6.偏函数 templates 1.flask请求与响应 from flask import Flask,req ...
- Flask(7)- request 对象
Flask 中很重要的 request 对象 浏览器访问服务端时,向服务端发送请求 Flask 程序使用 request 对象描述请求信息 当你想获取请求体.请求参数.请求头数据的时候,就需要靠 re ...
- request请求对象实例
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DemoRequest.as ...
- Request To JavaBean(请求对象转换为JavaBean对象)
背景: 经常要从request等对象取出值来赋入bean中,如果不用MVC框架的绑定功能的话,麻烦 一 参考资料 1 http://jc-dreaming.iteye.com/blog/563893 ...
随机推荐
- Servlet----------Servlet 概述
1.什么是Servlet Servle t是Java Web 的三大组件之一,它属于动态资源.Servlet 的作用是处理请求,服务器会把接收到时的请求交给 Servlet 来处理,在Servlet中 ...
- MySQL Sandbox安装使用
前言 经常看见新同学对于安装MySQL十分惧怕,这是因为不熟悉的缘故,确实源码编译比较麻烦,缺少各种依赖包也够折腾的.当然还有预编译包,但是对于新同学来说好像都挺麻烦的.当然有yum安装,但是我们需要 ...
- MySQL之——崩溃-修复损坏的innodb:innodb_force_recovery
转: https://blog.csdn.net/l1028386804/article/details/77199194 一.问题描述 今天在线运行的一个mysql崩溃了. 查看错误日志,如下: - ...
- SQL Server Management Studio最新版下载地址
https://docs.microsoft.com/zh-cn/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server ...
- 自己实现strtok函数
思路:每次在原来字符串中查找分隔字符串,将分隔字符串中所有字符设为'\0',然后输出分隔串前的子串,同时更新原串的起始位置. PS:有不少博客作者自己实现的方法中往往只将分隔串当做一个字符,实际上可以 ...
- 利用Python实现简单的相似图片搜索的教程
大概五年前吧,我那时还在为一家约会网站做开发工作.他们是早期创业公司,但他们也开始拥有了一些稳定用户量.不像其他约会网站,这家公司向来以洁身自好为主要市场形象.它不是一个供你鬼混的网站——是让你能找到 ...
- 【Java】-NO.16.EBook.4.Java.1.004-【疯狂Java讲义第3版 李刚】- 内部类
1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.004-[疯狂Java讲义第3版 李刚]- 内部类 Style:EBook Series:Java S ...
- k8s pv 的三种挂载模式
ReadWriteOnce:可读可写,只能被一个Node节点挂载 ReadWriteMany:可读可写,可以被多个Node节点挂载 ReadOnlyMany:只读,能被多个Node节点挂载
- [LeetCode] 35. Search Insert Position_Easy tag: Binary Search
Given a sorted array and a target value, return the index if the target is found. If not, return the ...
- js 图片区域可点击,适配移动端,图片大小随意改变
实现图片区域可点击,实际上使用map是可以的,但是适配效果并不好,图片只能是固定大小的值,而且点都被写死了. 在这里,我使用的js基于canvas写的一个小工具.可以圈出你需要点击的部分,然后生成一串 ...