Django获取请求参数方式

前端传参方式

  • 请求行: url传参(/分隔,url路径),查询字符串传参(?开头key=value形式)

  • 请求头: 如cookie

  • 请求体:表单格式,非表单格式如json

请求行url传参:

  • 请求行url传参
    请求方式为:https://xxx/xxxx/xxxx/xxx 路径的形式
    接收方式: 使用正则匹配url中的路径接收参数,参数接收顺序固定
    在这里插入图片描述

  • 请求行url传参, 接收时关键词名称必须相同
    请求方式为:https://xxx/xxxx/xxxx/xxx 路径的形式
    接收方式 : 关键字形式接收参数在这里插入图片描述
    在这里插入图片描述

  • 查询字符串传参, 接收时关键词名称必须相同
    请求方式为:https://xxx/xxxx?a=acd&b=123&c=qwe&a=234 (查询字符串)
    接收方式:request.GET.get(key)可获取对应的值,如果有一个键对用多个值的情况获得的是最后一个 值,另外使用request.GET.getlist(key)获得由所有对应值组成的一个列表

    注意: 其中request.GET中的GET指的是从请求行获取参数,而不是get方式的请求
    在这里插入图片描述

这两种方式可以混合使用,并且post和get方式访问都可以

请求体传参:

请求体数据格式不固定,可以是表单类型字符串,可以是JSON字符串,可以是XML字符串,应区别对待。

可以发送请求体数据的请求方式有POST、PUT、PATCH、DELETE。

Django默认开启了CSRF防护,会对上述请求方式进行CSRF防护验证,在测试时可以关闭CSRF防护机制,方法为在settings.py文件中注释掉CSRF中间件,

  • 表单数据 : 前端发送的表单类型的请求体数据,可以通过request.POST属性获取,返回QueryDict对象。
    请求方式为:POST
    接收方式: request.POST.get(a)获得表单中a的值
    在这里插入图片描述
  • 非表单数据json,文件,音频
    非表单类型的请求体数据,Django无法自动解析,可以通过request.body属性获取最原始的请求体数据,自己按照请求体格式(JSON、XML等)进行解析。request.body返回bytes类型。
    在这里插入图片描述
    其中因为pyhon3.5之前json.loads()方法只能接收str所有要使用decode()转码为str才能使用,但是在python3.6以后json.loads()可以接收str和byte类型不使用decode()依然可以使用

请求头传参:

  • 可以通过request.META属性获取请求头headers中的数据,request.META为字典类型。
def get_headers(request):
    print(request.META['CONTENT_TYPE'])  # 获取请求头中的content_type
    return HttpResponse('OK')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章