Django框架之获取客户端发送的数据
在Django框架中,我们可以获取到很多的数据;接下来我就为大家介绍一下如何获取客户端发送的数据。
1. 根据正则表达式匹配url中的数据
在子路由中根据正则表达式匹配到url中的数据,并传递给视图函数
通过位置参数,给视图函数进行传参
url(r'^index/([a-zA-Z]+)/(\d+)',views.视图函数名,name='视图函数名')
通过关键字参数,给视图函数进行传参
url(r'^index/(?P<参数1>[a-zA-Z]+)/(?P<参数2>\d+)',views.视图函数名,name='视图函数名')
这里给大家明确一下概念:
查询字符串:url中的参数
查询字典:有request对象的GET、POST属性获取到的数据
非表单数据:JSON数据、XML数据
以下是利用客户端的请求对象request进行获取数据的基本操作流程。
2. 利用request对象获取url中的查询字符串
查询字符串就是url地址中?后面的数据,如:http://www.baidu.com/?name=tom&age=22&sex=male
其中name=tom&age=22&sex=male就是查询字符串。
我们可以通过request对象的GET属性获取由查询字符串组成的字典,然后进行相应的操作。
查询字典(QueryDict)由两个方法:get()方法获取单一的键的值、getlist()方法获取一个键对应的多个值、字典名[‘’键名]。
def index(request):
# 获取查询字典
data = request.GET
name = data.get('key')
age = str(data.get('key'))
content = name + ' ' + age
hobby = data.getlist('key')
return HttpResponse(content)
注意:
以下操作推荐使用PSOTMAN软件进行测试,在测试之前需要关闭Django框架中的CSRF防护功能。
POSTMAN下载地址:
链接:https://pan.baidu.com/s/1JtI-Deu-xmHx6dTZ-INTTQ
提取码:o4xn
3. 获取请求体中的Form表单数据
利用request对象的POST属性,可以获取到请求体中的Form表单中的数据组成的查询字典。
查询字典(QueryDict)由三个方法:get()方法获取单一的键的值、getlist()方法获取一个键对应的多个值、字典名[‘’键名]。
def index(request):
# 获取请求体中的Form表单数据
# requerst.POST中的POST是属性
# 获取查询字典
data = request.POST
content = '<h1>name:%s age:%s</h1>' % (data['name'], data['age'])
return HttpResponse(content)
4. 获取请求体中的非表单数据(JSON数据)
利用request对象的body属性,可以获取到请求体中的非表单数据(字节流的JSON字符串)。
import json def index(request): json_str = request.body.decode() # 将获取到的JSON字符串转换成字典 json_dict = json.loads(json_str) content = json_dict['key'] return HttpResponse(content)
5. 获取请求头中的数据
利用request对象的MATE属性,可以获取到请求头中的所有数据并组成一个普通字典。
这里提一点,HTTP协议的请求行、请求头、请求体是我们人为划分出来的,在实际传输中只有一个请求头。
def index(request):
data_dict = request.META
print(type(data_dict))
content = ''
for key in data_dict:
content += str(key) + '----->' + str(data_dict.get(key)) + '<br>'
return HttpResponse(content)