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)
posted @ 2019-12-26 10:10  老王同鞋  阅读(585)  评论(0编辑  收藏  举报