视图-请求对象HttpRequest
每一个用户请求在到达视图函数的同时,Django 会创建一个 HttpRequest 对象并把这个对象当做第一个参数传给要调用的 views 方法。HttpRequest 对象包含了请求的元数据,比如(本次请求所涉及的用户浏览器端数据、服务器端数据等),在 views 里可以通过 request 对象来调用相应的属性
所有视图函数的第一个参数都是 HttpRequest 实例
官网:https://docs.djangoproject.com/zh-hans/4.1/ref/request-response/#django.http.HttpRequest
属性(除非另有说明,否则所有属性均应视为只读):
HttpRequest.scheme:
表示请求使用的协议(http 或 https)
HttpRequest.body:
原始 HTTP 请求主体,类型是字节串。处理数据一些非 html 表单的数据类型很有用,譬如:二进制图像,XML 等;
- 取 form 表单数据,请使用 HttpRequest.POST
- 取 url 中的参数,用 HttpRequest.GET
HttpRequest.path:
表示请求页面的完整路径的字符串,不包括 scheme 和域名。
例: "/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 值。
HttpRequest.content_type:
表示请求的 MIME 类型的字符串,从 CONTENT_TYPE 解析 。
HttpRequest.content_params:
包含在 CONTENT_TYPE 标题中的键/值参数字典。
HttpRequest.GET:
包含所有给定的 HTTP GET 参数的类似字典的对象。请参阅 QueryDict 下面的文档。
HttpRequest.POST:
包含所有给定 HTTP POST 参数的类似字典的对象,前提是请求包含表单数据。请参阅 QueryDict 文档。POST 不包含文件信息,文件信息请见 FILES。
HttpRequest.COOKIES:
包含所有 Cookie 的字典,键和值是字符串。
HttpRequest.FILES:
包含所有上传文件的类似字典的对象
HttpRequest.META:
包含所有可用 HTTP meta 的字典
中间件设置的属性:
Django 的 contrib 应用程序中包含的一些中间件在请求中设置了属性。如果在请求中看不到该属性,请确保使用了相应的中间件类 MIDDLEWARE
HttpRequest.session:
来自 SessionMiddleware:代表当前会话的可读写字典对象。
HttpRequest.site:
来自 CurrentSiteMiddleware: 代表当前网站的实例 Site 或 RequestSite 返回 get_current_site()
HttpRequest.user:
来自 AuthenticationMiddleware:AUTH_USER_MODEL 代表当前登录用户的实例