HttpRequest对象定义于django/http/request.py文件中,每当一个请求到来的时候,Django就会创建一个携带有元数据的HttpRequest对象,传递给视图函数的第一个参数。
HttpRequest对象常用的属性和方法
1)method
请求时所使用的HTTP方法,主要有GET、POST、PUT等。使用@require_http_methods装饰器指定视图可以接受的方法。例如:只允许接收GET和POST方法时可以这样配置 :
from django.views.decrators.http import require_http_methods
@require_http_methods(["GET","POST"])
def index(request):
if request.method=='GET':
return xxx
else:
return xxx
当使用其他方法发出请求的时候则会报405的错误。
在 django/views/decorators/http.py中还有其他的装饰器指定可以接受的方法,例如require_GET只运行GET方法...
2) scheme
返回请求的协议类型(http或https)
3)path
返回当前请求页面的路径,但是不包括协议类型和域名
4)GET
类字典对象,该对象只读,包含GET请求的所有参数。获取参数的方法:1.request.GET[参数名],若参数不存在则会报错.2.request.GET.get(参数名,获取不到的默认值)
5) POST
也是一个QueryDict类型的类字典对象,保存的是POST请求中提交的表单数据,获取参数的方式和GET类似。
6)FILES
这个属性只有在上传文件的时候才会用到,也是一个类字典对象.FILES属性中的每个键是中name的值,每个值是一个对应的Upload-File对象。
7)COOKIES
包含了请求的cookie信息
8)META
包含了请求的头部信息,例如:REMOTE_ADDR(客户端IP地址),HTTP_USER_AGENT(浏览器类型),SERVER_PORT(服务器端口号)......
9) user
标识当前登录用户的AUTH_USER_MODEL实例,其实就是Django用户系统中的User类型。这个属性由AuthenticationMiddleware中间件完成设置,在用户为登录的情况下,即匿名访问,user会被设置为AnonymousUser类型的实例.
HttpResponse对象定义于 django/http/response.py文件中,在视图中主动创建并返回.
常用属性和方法:
1)status_code
标识请求的状态,常用的状态码有 200、400、500等
2)content
存储响应内容的二进制字符串
3)write
将 HttpResponse对象视为类文件对象,可以向其添加响应数据
4)操作响应头
像操作字典一样操作HttpResponse对象,字典的键对应响应头
5)子类对象