devops——2、httpRequest-httpResponse-JsonResponse对象

一、HttpRequest对象

HttpRequest在django.http这个模块中
它是用django创建的
https://docs.djangoproject.com/en/1.11/ref/request-response/#httprequest-objects
1.1 HttpRequest对象的属性
常用属性:
HttpRequest.scheme 请求方案(http或https 通常)
HttpRequest.body 原始HTTP请求主体(访问请求中发布的原始或非表单数据)
HttpRequest.path 所请求页面的完整路径
HttpRequest.method 请求中使用的HTTP方法(POST或GET等)
HttpRequest.encoding 用于解码表单提交数据的当前编码(或者None,表示使用该DEFAULT_CHARSET设置)
HttpRequest.GET 所有给定的HTTP GET参数
HttpRequest.POST 所有给定的HTTP POST参数,前提是请求包含表单数据
HttpRequest.META 可用HTTP头文件
其他属性:
HttpRequest.content_type 请求的MIME类型
HttpRequest.path_info 主机名后面的URL部分被分成脚本前缀部分和路径信息部分,该属性始终包含路径的路径信息部分
HttpRequest.content_params CONTENT_TYPE 标题中包含的键/值参数字典
HttpRequest.COOKIES 所有cookie的字典。键和值是字符串。
HttpRequest.FILES 所有上传文件的类字典对象
HttpRequest.resolver_match
属性详细说明:
除非另有说明,否则所有属性均应视为只读。
HttpRequest.scheme
表示请求方案(http或https 通常)的字符串。
HttpRequest.body
原始HTTP请求主体作为字节字符串。这对于以不同于传统HTML表单的方式处理数据非常有用:二进制映像,XML有效负载等。对于处理传统表单数据,请使用 HttpRequest.POST。
您还可以HttpRequest使用类似文件的界面进行读取。见 HttpRequest.read()。
HttpRequest.path
表示所请求页面的完整路径的字符串,不包括方案或域。
例: “/music/bands/the_beatles/”
HttpRequest.path_info
在某些Web服务器配置下,主机名后面的URL部分被分成脚本前缀部分和路径信息部分。path_info无论使用何种Web服务器,该属性始终包含路径的路径信息部分。使用它path可以使代码更容易在测试服务器和部署服务器之间移动。
例如,如果WSGIScriptAlias你的应用程序设置为 “/minfo”,则path可能是"/minfo/music/bands/the_beatles/" 和path_info会"/music/bands/the_beatles/"。
HttpRequest.method
表示请求中使用的HTTP方法的字符串。这保证是大写的。例如:

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()

HttpRequest.encoding
表示用于解码表单提交数据的当前编码的字符串(或者None,表示使用该DEFAULT_CHARSET设置)。您可以写入此属性以更改访问表单数据时使用的编码。任何后续属性访问(例如从GET或读取POST)都将使用新encoding值。如果您知道表单数据不在DEFAULT_CHARSET 编码中,则很有用。
HttpRequest.content_type
Django 1.10中的新功能。
表示请求的MIME类型的字符串,从CONTENT_TYPE标头解析 。
HttpRequest.content_params
Django 1.10中的新功能。
CONTENT_TYPE 标题中包含的键/值参数字典。
HttpRequest.GET
类似于字典的对象,包含所有给定的HTTP GET参数。请参阅以下 QueryDict文档。
HttpRequest.POST
类似字典的对象,包含所有给定的HTTP POST参数,前提是请求包含表单数据。请参阅以下 QueryDict文档。如果您需要访问请求中发布的原始或非表单数据,请通过该HttpRequest.body属性访问它 。
请求可以通过POST使用空POST 字典进入- 例如,如果通过POST HTTP方法请求表单但不包含表单数据。因此,您不应该使用 检查POST方法的使用; 相反,使用(见)。if request.POSTif request.method =="POST"HttpRequest.method
POST它不包含文件上传信息。见FILES。
HttpRequest.COOKIES
包含所有cookie的字典。键和值是字符串。
HttpRequest.FILES
包含所有上传文件的类字典对象。每个键 FILES都name来自。每个值都是。<input type="file" name=""/>FILESUploadedFile
FILES如果请求方法是POST并且发布到请求的方法有,则只包含数据 enctype="multipart/form-data"。否则,FILES将是一个空白的字典对象。
HttpRequest.META
包含所有可用HTTP标头的字典。可用的头文件取决于客户端和服务器,但以下是一些示例:

CONTENT_LENGTH - 请求正文的长度(作为字符串)。
CONTENT_TYPE - 请求正文的MIME类型。
HTTP_ACCEPT - 响应的可接受内容类型。
HTTP_ACCEPT_ENCODING - 可接受的响应编码。
HTTP_ACCEPT_LANGUAGE - 响应的可接受语言。
HTTP_HOST - 客户端发送的HTTP主机头。
HTTP_REFERER - 引用页面,如果有的话。
HTTP_USER_AGENT - 客户端的用户代理字符串。
QUERY_STRING - 查询字符串,作为单个(未解析的)字符串。
REMOTE_ADDR - 客户端的IP地址。
REMOTE_HOST - 客户端的主机名。
REMOTE_USER - Web服务器验证的用户(如果有)。
REQUEST_METHOD- 一个字符串,如"GET"或"POST"。
SERVER_NAME - 服务器的主机名。
SERVER_PORT - 服务器的端口(作为字符串)。

除了CONTENT_LENGTH和之外CONTENT_TYPE,如上所述,请求中的任何HTTP头都将转换为META键,方法是将所有字符转换为大写,用下划线替换任何连字符并HTTP_在名称中添加前缀。因此,例如,调用的标头X-Bender将映射到META密钥 HTTP_X_BENDER。
请注意,runserver在名称中删除带有下划线的所有标题,因此您将看不到它们META。这可以防止基于下划线和短划线之间的歧义的头部欺骗,这两者都在WSGI环境变量中对下划线进行规范化。它匹配Nginx和Apache 2.4+等Web服务器的行为。
HttpRequest.resolver_match
ResolverMatch表示已解析URL 的实例。此属性仅在URL解析发生后设置,这意味着它在所有视图中都可用,但在URL解析发生之前执行的中间件中不可用(process_view()尽管可以使用它 )。

1.2 HttpRequest对象的方法
HttpRequest.get_host() 按顺序返回请求的原始主机
HttpRequest.get_port() 返回请求的原始端口
HttpRequest.get_full_path() path如果适用,返回加上附加的查询字符串
HttpRequest.is_secure()
HttpRequest.is_ajax()

二、HttpResponse对象

HttpResponse在django.http这个模块中
传递一个字符串作为页面的内容到HttpResponse构造函数

   >>> from django.http import HttpResponse
    >>> response = HttpResponse("Here's the text of the Web page.")
    >>> response = HttpResponse("Text only, please.", content_type="text/plain")

https://docs.djangoproject.com/en/1.11/ref/request-response/#httpresponse-objects

三、JsonResponse

from django.http import JsonResponse
def index(request):
    # dataD = ["a","b","c"]
    data = {"a":"b","c":"d"}
    # return JsonResponse(dataD,safe=False) #集合,使用safe=False
    return JsonResponse(data) #字典,默认safe=True

猜你喜欢

转载自blog.csdn.net/change_can/article/details/84983416