请求(Request)
HttpRequest对象:
当一个页面被请求时,Django会创建一个包含本次请求原信息的HttpRequest对象,并将其自动传递给响应的视图函数。
HttpRequest对象封装了请求报文中的请求行、头部信息、内容主体等。
请求方法:
常见的HTTP请求方法包括GET和POST。
GET请求通常用于请求数据,参数通过URL传递。
POST请求通常用于提交数据,参数包含在请求体中。
请求参数:
GET请求的参数可以通过request.GET
访问,它是一个类似于字典的对象。
POST请求的参数可以通过request.POST
访问,它也是一个类似于字典的对象。
如果请求中包含表单数据,Django会将其封装成QueryDict对象,支持获取单个值、多个值以及列表等操作。
请求头:
可以通过request.META
属性获取请求头中的数据。
request.META
是一个字典类型的对象,包含了请求的所有头部信息。
请求体:
对于POST请求,请求体通常包含表单数据或JSON数据等。
可以通过request.body
获取原始的请求体数据(二进制格式),然后解码并解析。
其他属性:
request.scheme
:表示请求方案的字符串(通常为http或https)。
request.path_info
:表示请求的路径组件(不含域名)。
request.method
:表示请求使用的HTTP方法(大写字符串)。
request.user
:表示当前登录的用户对象(如果启用了AuthenticationMiddleware中间件)。
响应(Response)
HttpResponse对象:
在Django视图中,可以使用HttpResponse对象来构造并返回一个HTTP响应。
HttpResponse对象包含响应的内容、状态码、头部信息等。
设置响应内容:
可以通过HttpResponse
对象的content
参数设置响应体的内容。
可以使用content_type
参数指定响应体的数据类型(默认为text/html)。
设置状态码:
可以通过HttpResponse
对象的status
参数设置HTTP响应状态码。
Django提供了多个内置的HTTP状态码,如200(OK)、404(Not Found)等。
设置响应头:
可以通过HttpResponse
对象的set_header
方法或__setitem__
方法设置响应头。
JsonResponse:
如果需要返回JSON格式的响应数据,可以使用JsonResponse
对象。
JsonResponse
会自动将Python字典或列表转换为JSON字符串,并设置正确的Content-Type头部。
render:
render
函数用于渲染HTML模板并返回响应。
它接受一个请求对象、一个模板名称以及一个上下文字典作为参数。
重定向
重定向的概念:
重定向是指将客户端的请求从一个URL转发到另一个URL的过程。
在Django中,重定向通常用于在用户完成某个操作后跳转到另一个页面。
HttpResponseRedirect:
HttpResponseRedirect
是Django中实现重定向的一个类,它继承自HttpResponse
。
使用HttpResponseRedirect
时,需要传入一个URL作为参数。
redirect函数:
Django 2.0+版本引入了redirect
函数作为HttpResponseRedirect
的简写。
redirect
函数接受一个URL字符串或URL名称与参数的组合来构造重定向的URL。
反向解析:
在使用redirect
函数进行重定向时,可以使用Django的URL反向解析功能来生成URL。
反向解析需要指定URL的名称以及相应的参数。
状态码:
默认情况下,HttpResponseRedirect
和redirect
函数会返回302状态码(临时重定向)。
如果需要永久重定向,可以使用HttpResponsePermanentRedirect
或设置redirect
函数的permanent
参数为True。