• Django整理(五)


    请求对象

    一、客户端传参的几种方式

    1. 通过URL路径(path)传递,例如:http://127.0.0.1:8000/news/1/2,两个参数:id和page

    2. 通过 query string查询字符串 传递

        i. 例如:http://127.0.0.1:8000/news?category=1&page=2

    3. 通过 body请求体 传递,又可根据传递的数据格式,分为:

        i. 键值对:category=1&page=2

        ii. 表单数据

        iii. 非表单数据(json,xml)

    4. 通过http协议请求头(header)传递

    二、HttpRequest对象

    一、Django请求和响应过程:

     

    二、request对象常用属性:

     

    三、QueryDict对象

        · 所在的包:django.http.QueryDict

        · HttpRequest 对象中的 GET 和 POST 属性都是QueryDict类型

        · 与python字典不同:QueryDict对象一个键可以保存多个值

        · get() 方法

            (1) 根据键获取值

            (2) 如果一个键同时拥有多个值,将获取最后一个值

            (3) 如果键不存在则返回None值,可以设置返回自定义的默认值

                dict.get('键', 默认值)

        · getlist() 方法

            (1) 根据键获取多个值,值以列表返回

            (2) 如果键不存在则返回空列表[]

                dict.getlist('键', 默认值)

    四、通过request获取请求参数

    1. 获取查询字符串

    一、需求

    获取URL地址 http://127.0.0.1:8000/news?category=1&page=2

    二、代码参考

     重要:查询字符串不区分请求方式,即使客户端通过POST方式发起请求,依然可以通过request.GET获取

     请求中的查询字符串数据。

    2. 获取请求体数据

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

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

    2.1 获取表单数据Form Data(键值对)

    前端发送的表单或键值对类型的请求体数据,可以通过request.POST属性获取

    重要:request.POST只能用来获取POST方式的请求体表单数据或键值对数据。如果为非post请求提交的

    请求体数据,或者是请求体数据类型为非表单或非键值对数据,则需要通过request.body属性获取提交的

    数据后,再自己手动解析。

    2.2 非表单类型 Non-Form Data

    非表单类型的请求体数据,Django无法自动解析,可以通过request.body属性获取最原始的请求体数据,自

    己按照请求体格式(JSON、XML等)进行解析。request.body返回bytes类型。

    例如获取请求体中的json数据:{"category": 1, "page": 2}

     3. 获取请求头数据

    可以通过request.META属性获取请求头headers中的数据,request.META为字典类型。

    注意:

        · 获取自定义的请求头属性值时,需要加前缀 HTTP_ 并转成大写,作为键来获取值

    示例:

  • 相关阅读:
    http://maxie.cnblogs.com/
    有一种爱叫错过
    Lotuser进阶系列(转)——多目录环境中的单点登陆1
    DOMINO中实现PDF在线编辑控件 and so on......(三)
    DOMINO中实现PDF在线编辑控件 and so on......(一)
    Lotuser进阶系列(转)——多目录环境中的单点登陆2
    在两个代理之间传递参数
    利用 DSAPI 为 Domino Web 用户定制用户名和口令认证
    通过 Lotus Domino Java 代理消费 Web 服务
    代理中如何获取参数么?
  • 原文地址:https://www.cnblogs.com/ljfight/p/12096942.html
Copyright © 2020-2023  润新知