• Django中HttpRequest常用参数介绍


    HttpRequest对象常用参数介绍,以及前端不同请求方式(http方法/Content-Type类型)对应的参数获取方式。

    一、HttpRequest对象

    django请求对象的详细参数以及实现方式可以在django.http.request查看源码具体分析,也可以查看官方文档https://docs.djangoproject.com/en/3.0/ref/request-response/

    1.属性介绍

    (1) request.scheme

    请求的协议种类(http/https)

    (2) request.path

    请求页面的完整路径(get_full_path()在path的基础上还有查询条件)

    (3) request.method

    请求使用的http方法(POST,GET,DELETE,PUT...)

    (4) request.content_type

    请求的MIME类型 

    (5) request.GET/request.POST

    get/post请求中的所有参数,类似于字典的对象

    (6) request.COOKIES

    请求包含的cookie字典

    (7) request.FILES

    上载文件的类字典对象

    (8) request.headers(Django2.2新功能)

    获取请求headers里面的内容,不区分大小写,类似字典的对象

    request.headers["Cotent-Length"]  请求报文中实体主体的字节大小

    request.headers["Content-Type"]  请求的MIME类型 

    request.headers["User-Agent"]  请求的用户代理

    (9) request.META

    包含所有HTTP头部信息的字典

    • CONTENT_LENGTH –请求正文的长度(以字符串形式) 
    • CONTENT_TYPE –请求正文的MIME类型
    • HTTP_ACCEPT –响应可接受的内容类型
    • HTTP_ACCEPT_ENCODING –响应的可接受编码
    • HTTP_ACCEPT_LANGUAGE –可接受的响应语言。
    • HTTP_HOST –客户端发送的HTTP Host标头
    • HTTP_USER_AGENT –客户端的用户代理字符串。
    • REMOTE_ADDR –客户端的IP地址。
    • REMOTE_HOST –客户端的主机名
    • SERVER_NAME –服务器的主机名
    • SERVER_PORT –服务器的端口(以字符串形式)
    • SERVER_PROTOCOL –http协议版本(HTTP/1.1)

    (10) request.user

    当前登录用户的实例

    (11) request.session

    代表当前会话的可读可写,类似于字典的对象(删除用户登录的session,request.session.delete(session_key) 

     2.方法介绍

    (1) request.get_host()

    获取主机域名或者IP加端口号

    (2) request.get_port()

    请求端口号

    (3) request.is_secure()

    如果使用的是Https,则返回True,表示连接是安全的

     (4) request.get_full_path()

    带有请求参数的完整path

     二、请求参数获取

    1.content-type为application/json(消息主体是序列化后的json字符串)

    如果当前端请求的content-type为json字符串的时候,django需要通过json.loads(request.body)来获取请求体里面的参数

    2.content-type为application/x-www-form-urlencode(数据被编码为key/value,这是标准的编码格式)

    (1)当请求方式为get/post

    当请求方式为post/get的时候,可以直接通过request.GET.get()/request.POST.get()来直接获取请求的参数

    (2)当请求方式为delete/put/patch/options...

    当请求方式不为get/post的时候,在获取前端请求的参数,需要把request.body转化为QueryDict对象,然后通过get方法获取想要的参数即可(QueryDict(request.body).get()

  • 相关阅读:
    中国MOOC分数——Java
    axios的封装和使用
    ModelViewSet里的过滤、排序、分页、序列化设置
    Django和DjangoDRF的区别
    RESTFUL风格
    MVT和MVC的个人理解
    HTTP请求简单理解
    虚拟机创建Django项目并创建APP
    python列表元素添加的几种方法以及差异总结
    python时间格式
  • 原文地址:https://www.cnblogs.com/zzqit/p/12746415.html
Copyright © 2020-2023  润新知